1.2. Integration messenger and Node.js
1.2. Integration messenger and Node.js
1.Introduction
只用DialogFlow我們可以建立一個簡單的機器人, 但是如果想要做到更延伸的功能, 我們可以整合Node.js, Heroku, DialogFlow
2.Step by step
Create a new agent in DialgFlow
Create a new Heroku app
Install Heroku cli
Open ternminal and type:
Clone template from Github
從package.json中可以看出需要的module, 例如apiai
建立一個Facebook page
填入名稱
建立一個新的Facebook App
填入Facebook page名稱
選擇Messenger -> SetUp
從Page的下拉式選單中選擇你的Facebook page, 將會產生一組token拷貝它
打開project -> config.js -> FB_PAGE_TOKEN, 貼上token
設定Facbook app webhook
打開Heroku Dashboard -> Settings -> 拷貝Heroku Domain
將Heroku Domain貼到Facbook app webhook的Callback URL
將Heroku Domain貼到project -> config.js -> SERVER_URL
輸入一組任意字串到Verify token
將Verify token貼到project -> config.js -> FB_VERIFY_TOKEN
Subscription Fields勾選messages, messaging_postbacks
從DialogFlow的Dashboard中找到Client access token, 拷貝並貼到project -> config.js -> API_AI_CLIENT_ACCESS_TOKEN
從Facebook developer appdashboard的Settings -> Basic, App Secret -> Show, 拷貝後貼到 project -> config.js -> FB_APP_SECRET
Deploy完成後回到Facbook app webhook, 點選Verify and Save
從Webhooks section的下拉式選單中選擇你的Facebook page, 點選Subscribe
輸入heroku logs
如何在local端測試呢? 可以使用Localtunnel 或是ngrok
3. Code review
verifyRequestSignature
在這裡會將x-hub-signature與加密後的app secret比對, 若不同則會拋出error
public folder
放些公開的靜態資料如image
app.get('/')
app.get('/webhook/')
app.post('/webhook/')
receivedMessage: 處理user的訊息事件
handleEcho
handleQuickReply: 傳訊息給DialogFlow來處理
sendToApiAi
handleMessageAttachments: 處理非文字訊息
receivedPostback
Last updated