使用C#開發LineBot(9) - 取得新加入的好友身分資訊
在知道了如何建立LineBot的WebHook之後,許多朋友開始有了另一串問題。其中我最常被問到的就是,如何在用戶加入你的bot為好友的時候,取的用戶的身分xk7。
這個問題中有兩個關鍵:
- 用戶加入你的bot時,你如何得知?
- 如何取得特定用戶的身分資訊?
這兩個動作都不難,都可以在我們的WebHook中取得。
首先,當有一個新的用戶加入你的Bot為好友時,我們可以從WebHook取得的JSON得知,透過我們的SDK,你可以很簡單的以底下的程式碼判斷:
if (ReceivedMessage.events.FirstOrDefault().type == "follow")
{
…
}
因為新加入好友或是被解除封鎖,都會收到type是follow的event,因此上面的程式碼很容易判斷出有新的好友來了…
而得知新好友(用戶)來了之後,我們可以透果底下這一行取得用戶資訊:
var userInfo = bot.GetUserInfo(ReceivedMessage.events.FirstOrDefault().source.userId);
得到userInfo物件之後,你可透過 displayName 輕鬆取得用戶暱稱,也因此,我們把用戶暱稱顯示出來:
bot.ReplyMessage(ReceivedMessage.events.FirstOrDefault().replyToken, $"哈,'{userInfo.displayName}' 你來了...歡迎");
得到的結果就是:
當用戶加入某個bot為好友,或是解除封鎖,都會收到follow,我們上面的程式碼抓到用戶名稱,顯示出來,結果就是上圖這樣。
很容易吧,試試看囉…
hope enjoy it…
--------------------------------------------
相關課程: http://www.studyhost.tw/NewCourses/LineBot
如果需要即時取得更多相關訊息,可按這裡加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。
留言
string postData = Request.Content.ReadAsStringAsync().Result;
//剖析JSON
var ReceivedMessage = isRock.LineBot.Utility.Parsing(postData);
string strReceive = ReceivedMessage.events[0].message.text.Trim().ToUpper();
string strEventType = ReceivedMessage.events[0].type.Trim().ToUpper();
isRock.LineBot.Bot bot = new isRock.LineBot.Bot(ChannelAccessToken);
var userInfo = bot.GetUserInfo(ReceivedMessage.events.FirstOrDefault().source.userId);
switch (strEventType)
{
case "FOLLOW":
bot.ReplyMessage(ReceivedMessage.events.FirstOrDefault().replyToken, "你的LINEID【" + userInfo.userId + "】," + userInfo.displayName + "歡迎加入");
break;
default:
break;
}
看上面的程式碼,如果是加入好友的follow events的話,估計你第三行程式就exception了吧我猜...