pierre3 / linemessagingapi Goto Github PK
View Code? Open in Web Editor NEWLINE Messaging API for .Net
License: MIT License
LINE Messaging API for .Net
License: MIT License
https://www.codefactor.io/repository/github/pierre3/linemessagingapi/issues
.
I found some code style issue in codefactor
, most of them are simple(like empty space
, multi-empty lines
etc...)
Is there any need to let me make a pull request to fix them?
Thanks : )
.
BTW, will you willing to add codefactor
and appveyor
to manage code quality in this project?
Of course it's free in github public project.
Verify signature has faild
if (request == null) { throw new ArgumentNullException(nameof(request)); }
if (channelSecret == null) { throw new ArgumentNullException(nameof(channelSecret)); }
var content = await request.Content.ReadAsStringAsync();
var xLineSignature = request.Headers.GetValues("X-Line-Signature").FirstOrDefault();
if (string.IsNullOrEmpty(xLineSignature) || !**VerifySignature(channelSecret, xLineSignature, content)**)
{
**throw new InvalidSignatureException("Signature validation faild.");**
}
dynamic json = JsonConvert.DeserializeObject(content);
if (!string.IsNullOrEmpty(botUserId))
{
if (botUserId != (string)json.destination)
{
throw new UserIdMismatchException("Bot user ID does not match.");
}
}
return WebhookEventParser.ParseEvents(json.events);
I try to integrate the Line Bot system to a framework (http://www.aspnetboilerplate). But when i try the web hook function i got this error
System.Reflection.TargetInvocationException: Property accessor 'Session' on object 'ASP.global_asax' threw the following exception:'Session state is not available in this context.' ---> System.Web.HttpException: Session state is not available in this context.
at System.Web.HttpApplication.get_Session()
Any suggestion ?
Currently I am converting LINE with bot framework application to ASP.NET Core, implement the same controller
[HttpPost] public async Task<ActionResult> Post([FromBody] HttpRequestMessage request)
But when I test webhook, HttpRequestMessage does not have any data. Can anyone help?
How to send flex message with c#.
public async Task SmallGroupQuickReply(String DisplayLineId, string UserId)
{
ISendMessage replyMessage = null;
var quickReply = new QuickReply();
quickReply.Items.Add(new QuickReplyButtonObject(
new UriTemplateAction("URI ACTION!", "https://church.speechmessage.com.tw:466"), "https://github.com/apple-touch-icon.png"));
replyMessage = new TextMessage("Make a Choice", quickReply);
m_PushUtility.SendMessage(DisplayLineId, new List<ISendMessage> { replyMessage });
}
{
"type": "text",
"text": "Hello, I am Cony!!",
"sender": {
"name": "Cony",
"iconUrl": "https://line.me/conyprof"
}
}
access modifier for UploadRichMenuImageAsync is private but should be public. I will ad PR.
aFlexMessage = new FlexMessage("Restrant")
{
Container = new BubbleContainer()
{
Hero = new ImageComponent(url: "https://scdn.line-apps.com/n/channel_devcenter/img/fx/01_1_cafe.png")
{
Size = ComponentSize.Full,
AspectRatio = AspectRatio._20_13,
AspectMode = AspectMode.Cover,
Action = new UriTemplateAction(null, "http://linecorp.com/")
},
Body = new BoxComponent(layout: BoxLayout.Vertical)
{
Contents = new IFlexComponent[] {
new TextComponent("Broun Cafe")
{
Weight = Weight.Bold,
Size = ComponentSize.Xl
},
new BoxComponent(layout: BoxLayout.Baseline)
{
Margin = Spacing.Md,
Contents = new IFlexComponent[]
{
new IconComponent("https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png")
{
Size = ComponentSize.Sm
},
new IconComponent("https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png")
{
Size = ComponentSize.Sm
},
new IconComponent("https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png")
{
Size = ComponentSize.Sm
},
new IconComponent("https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png")
{
Size = ComponentSize.Sm
},
new IconComponent("https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gray_star_28.png")
{
Size = ComponentSize.Sm
},
new TextComponent("4.0")
{
Size = ComponentSize.Sm,
Margin = Spacing.Md,
Flex = 0,
Color = "#999999"
}
}
},
new BoxComponent(BoxLayout.Vertical)
{
Margin = Spacing.Lg,
Spacing = Spacing.Sm,
Contents = new IFlexComponent[]
{
new BoxComponent(BoxLayout.Baseline)
{
Spacing = Spacing.Sm,
Contents = new IFlexComponent[]
{
new TextComponent("Place")
{
Size = ComponentSize.Sm,
Color = "#aaaaaa",
Flex = 1
},
new TextComponent("Miraina Tower, 4-1-6 Shinjuku, Tokyo")
{
Size = ComponentSize.Sm,
Wrap = true,
Color = "#666666",
Flex = 5
}
}
}
}
},
new BoxComponent(BoxLayout.Baseline)
{
Spacing = Spacing.Sm,
Contents = new IFlexComponent[]
{
new TextComponent("Time")
{
Size = ComponentSize.Sm,
Color = "#aaaaaa",
Flex = 1
},
new TextComponent("10:00 - 23:00")
{
Size = ComponentSize.Sm,
Wrap = true,
Color = "#666666",
Flex=5
}
}
}
}
},
Footer = new BoxComponent(BoxLayout.Vertical)
{
Spacing = Spacing.Sm,
Flex = 0,
Contents = new IFlexComponent[]
{
new ButtonComponent(new UriTemplateAction("Call", "https://linecorp.com"))
{
Style = ButtonStyle.Link,
Height = ButtonHeight.Sm
},
new ButtonComponent(new UriTemplateAction("WEBSITE", "https://linecorp.com"))
{
Style = ButtonStyle.Link,
Height = ButtonHeight.Sm
},
new SpacerComponent(ComponentSize.Sm)
}
}
}
};
json = JsonConvert.SerializeObject(aFlexMessage);
await m_PushUtility.SendMessage(DisplayLineId, new List<ISendMessage> { aFlexMessage });
===============================================
ERROR MESSAGE :
MESSAGE = ERROR : FullName = LineApiWebhook.LineBotApp , Time = 2018/9/11 δΈε 08:07:36 , Description = StatusCode=BadRequest, The request body has 1 error(s),[{May not be empty, messages[0].contents}]
I'm trying to issue a short-time channel access token before I start to use the API. I found that if I call IssueChannelAccessTokenAsync
before calling LineMessagingClient
constructor, I'll get a NRE, probably because IssueChannelAccessTokenAsync
needs to access _url
static field which is set by the constructor. Without the constructor being called first, I can't issue a short-time channel access.
Hi
I have found two places where errors can occur.
325 Line
for (int i = 0; i < (double)hcard.Buttons.Count / 4; i++)
If the button does not exist, an error occurs because it is null.
343 Line
var actionLabel = hcard.Title?.Length < hcard.Subtitle?.Length ? hcard.Title : hcard.Subtitle;
If the subtitle does not exist, an error occurs because the comparison is not possible.
Please check the source code.
Thank you very much for making a good source and publishing it. This time I use your source to make PPT and video about how to use DirectLine and Line Message API. I will notify you after posting your blog post later.
Best regards,
Park
Hi guys, great work, thats for that project!
I have a question (not an issue) regarding the PushMessageAsync
.
As of now I do
public async void SendMessage(string m)
{
await Client.PushMessageAsync("Uyxyxy", m);
}
where Uyxyxy
is a userId. That is working! In the LineMessagingClient definition I can see
// Summary:
// Send text messages to a user, group, or room at any time. Note: Use of push messages
// are limited to certain plans.
So now I want to send a message to a room. Do you know where I get the roomId from?
From the LINE developer API reference I can see that the Request body property to
hast to be the
ID of the target recipient. Use a userId, groupId, or roomId value returned in a webhook event object. Do not use the LINE ID found on the LINE app.
Does that mean I have to deal with webhook event objects? Or is there any other way? Do you have experience with that? And maybe an example? Thanks a lot in advance.
I want to know my friends are online or offline before send a push message to them.
Is this possible?
For example, ButtonsTemplate doesn't require thumbnailimageurl according to https://developers.line.me/en/docs/messaging-api/reference/#buttons
The GetContent API need to pass the header 'X-Line-Content-Api-Version' with value 'v2' to get large content.
AudioMessage, VideoMessage missing ISendMessage interface
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.