2017年6月21日 星期三

關於LineBot(9) - 取得新加入的好友身分資訊

在知道了如何建立LineBot的WebHook之後,許多朋友開始有了另一串問題。其中我最常被問到的就是,如何在用戶加入你的bot為好友的時候,取的用戶的身分xk7。

這個問題中有兩個關鍵:

  1. 用戶加入你的bot時,你如何得知?
  2. 如何取得特定用戶的身分資訊?

這兩個動作都不難,都可以在我們的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…

此範例原始程式碼位於 : https://github.com/isdaviddong/LineBotExample_GetUserInfo/blob/master/LineBotExample_GetUserInfo/Controllers/LineBotController.cs

--------------------------------------------
相關課程: http://www.studyhost.tw/NewCourses/LineBot
如果需要即時取得更多相關訊息,可按這裡加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。 

2 則留言:

匿名 提到...

使用了,沒反應是什麼原因

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;
}

isDavid 提到...

沒反應?
看上面的程式碼,如果是加入好友的follow events的話,估計你第三行程式就exception了吧我猜...