C# MVC Facebook 粉絲專頁自動回應機器人開發
C# mvc 使用 facebook message api 粉絲專頁自動回應機器人
draw Matol
calendar_month 2019/12/31
前言
粉絲專頁是眾多公司、政府、個人等推銷常用的功能,主因是可直接接觸客戶、民眾並可線上回答問題。
但如果人數眾多的粉絲專頁呢?光詢問,回答一來一往就花費不少功力。
其實客戶、民眾詢問問題中,絕大部分屬於類似問題,若有一個自動回應功能的機器人,即可減少支出成本。
前置作業
a. 建立粉絲專頁
到 facebook 粉絲專頁頁面建立粉絲專業
b. 建立 facebook 應用程式
到 facebook developer 點擊「我的應用程式」後選擇「建立應用程式」
c. 應用程式設定 Messager 與粉絲專頁鏈結
點選 Message(圖中紅框) 點選設定,並在設定頁面點選「新增或移除粉絲專頁」(圖2)
圖2-
d. 應用程式設定頁面中,點選「產生權杖」
產出權杖先保留,後續功能會使用到
程式功能撰寫
a. 撰寫驗證機制
Facebook webhook 是使用 GET 方式呼叫驗證功能 (需注意呼叫方式須為https get)
(自訂權杖部分等等會在b點說明)
[HttpGet]
[Route("~/api/FBWebHook/GetBotMessage/")]
public HttpResponseMessage Webhook()
{
// 驗證
var token = HttpContext.Current.Request.QueryString["hub.verify_token"];
if (!string.IsNullOrEmpty(token))
{
// 自行設定的權杖驗證
var myToken = ConfigurationManager.AppSettings["FBWookMessageVerifyToken"];
if (myToken.Equals(token))
{
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(HttpContext.Current.Request.QueryString["hub.challenge"])
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
return response;
}
}
return null;
}
b. 訊息服務程式部屬與設定
再來我們回到原先 message 設定頁面,在 webhooks 列新增回呼網址,並輸入剛剛所建立之呼叫連結
權杖則自行設定(如圖,確認後會進行呼叫驗證,正確才可儲存)
c. 設定訂閱功能
完成b點回呼網址設定後,在message 設定頁面下方會看到粉絲專頁訂閱功能,這邊我們需要的是讀取與回應使用者的方法
所以選擇訂閱的是 messages (如圖) 並訂閱
d. 加入回應功能 (可在此加入判斷或是導入dialogflow等自動回應邏輯)
驗證完成後,就可撰寫回應功能(如下方程式碼),須注意須為驗證呼叫網址一樣
[HttpPost]
[Route("~/api/FBWebHook/GetBotMessage/")]
public IHttpActionResult FBWebhook()
{
//傳送訊息
try
{
var sr = new StreamReader(HttpContext.Current.Request.InputStream);
string content = sr.ReadToEnd();
var mcs = JsonConvert.DeserializeObject<RootObject>(content);
// 發送
MessageLogic(mcs.entry[0].messaging[0].sender.id, message);
return Ok();
}
catch (Exception ex)
{
throw ex;
}
}
返回facebook message
private void MessageLogic(string userId, string QueryMsg)
{
WebHookMessages.Text(userId, string.Format("{0}\n{1}", "[此為BOT自動回覆]", QueryMsg));
}
啟用應用程式&測試
這是很重要的一點,當設定完成後必須回到developer應用程式頁面,去啟動剛剛所建立的程式才可正常運作(上方列條)
啟動後就可至粉絲專頁發送訊息進行測試囉!(圖為介接 DialogFlow 自動回應所撰寫的回應)
※ 目前仍為開發模式,僅有應用程式建立&管理者對粉絲專頁對話才有效 (一般使用者仍無回應)
如需開放一般使用者回應功能則須至應用程式設定下方去註冊 page_messages 功能並審核通過
● Facebook 文件 (WebHook事件) https://developers.facebook.com/docs/messenger-platform/reference/webhook-events ● RootObject Class 定義參考 https://developers.facebook.com/docs/messenger-platform/reference/webhook-events/messages