iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 30
0
AI & Machine Learning

ChatBot&Chatbase系列 第 30

Day30[Chatbase]FB Messenger->Chatbase

今天就是要將Day29的內容整合到Fb Messenger Chatbot裡面
Messenger Chatbot製作是在這個系列的一開始
在今天這神聖的第三十天做一個整合 感覺有始有終呢XD
那開始吧!!!

1.首先我還是先將兩個專案放在一起,再進行程式部分的整合:

  • Fb Messenger Chatbot可以從 Day9提供的[製作的程式碼] 來下載完整的檔案
  • Chatbase可以從 Day27第一步的地方 下載專案檔案
    兩個專案都準備好了就將它們放在同一個資料夾裡

Day29有做了兩種方式來傳送Facebook訊息到Chatbase的方式
方法一:一般的方式(各平台皆能用)
方法二:Facebook Message API(只有FB Meaaenger能用)
今天的整合會將兩種方式都加入到Fb Messenger Chatbot

2.接著就進行程式碼的合併
打開原本寫有Fb Messenger Chatbot的app.py
(這邊就不再說明原本就做好的Fb Messenger Chatbot的部分)
安裝並引入套件Chatbase需要的

from chatbase import FacebookAgentMessageSet, FacebookUserMessageSet
from chatbase import Message

3.與FB Messenger Chatbot整合的程式部分
是從

@app.route('/', methods=['POST'])
def webhook():
.....以下省略.....

這一段開始的

為了Chatbase加上去的部分在於:
1.因傳送時需要message_id,因此取一個變數來存。
從本來有的get('message')的地方,再多出一個取出傳送訊息時得到的message_id

if messaging_event.get('message'):
    if 'mid' in messaging_event['message']:
        message_id = messaging_event['message']['mid']

2.發送訊息的時候也傳送到Chatbase之方法一 - 運用一般方法:
從原本有的分析傳送訊息並對應回應的部分,加入要傳遞到Chatbase的程式

if entity == 'hello':
    msg = Message(api_key="BOT API",
    type="user",
    platform="Facebook",
    version="1",
    user_id=sender_id,
    message=messaging_text,
    intent="Hello",
    not_handled=True
    )
    resp = msg.send()
    print(resp)
    response="你可以輸入 __(地區)密室 來找尋地方密室逃脫工作室的資訊"
    response1="輸入 其它 了解其它功能或是輸入 抽正咩 來抽一張正咩圖!哈哈"
    bot.send_text_message(sender_id, messaging_text)
    bot.send_text_message(sender_id, response)
    bot.send_text_message(sender_id, response1)

3.發送訊息的時候也傳送到Chatbase之方法二 - 運用Facebook Message API:
從原本有的分析傳送訊息並對應回應的部分,加入要傳遞到Chatbase的程式

if entity == 'mstype':
    usrSet = FacebookUserMessageSet(api_key="BOT API", version="1")
	msg = usrSet.new_message(intent="mstype", message=messaging_text)
	msg.set_recipient_id(recipient_id)
	msg.set_sender_id(sender_id)
	msg.set_message_id(message_id)
	msg.set_as_handled()
	resp = usrSet.send()
	print(resp)
	response = "這是 {} 的資訊.".format(str(value))
	elements2 = get_ms_elements(value)
	bot.send_generic_message(sender_id, elements2)

4.執行結果
在FB Messenger Chatbot仍然是正確收到回覆
https://ithelp.ithome.com.tw/upload/images/20180118/20107144oU6BVb7kll.pnghttps://ithelp.ithome.com.tw/upload/images/20180118/20107144XSc9tXYNUd.pnghttps://ithelp.ithome.com.tw/upload/images/20180118/20107144LGQ8Xd3OA7.png

在Chatbase不僅可以看到有多少人傳送訊息,訊息的內容與回覆這個字的次數都有被記錄下來
https://ithelp.ithome.com.tw/upload/images/20180118/201071445QuAoWLYPC.png

總結

個人鄙見覺得Chatbase在記錄,分析,整合的部分都相當不錯
唯一有一點小缺點就是更新的速度不是太快(可能資料量大?)
但我覺得如果是長期的商用,更新速度不那麼即時也不會有太大影響的吧
所以整體來說我覺得使用Chatbase對於Chatbot的分析與後續優化都有相當大的幫助

回顧

簡單回顧一下這30天

Day1 - Day9 -> FB Messenger Chatbot
(在Day9可以看到整個FB Messenger Chatbot製作的目錄)

Day10 - Day23 -> Line Chatbot
(在Day23可以看到整個Line Chatbot製作的目錄)

Day24 - Day30 -> Chatbase


鐵人賽完賽啦!!!!

不免俗的必須發一些感想哈哈哈
一開始決定參加鐵人賽是希望藉此督次自己在30天內認真學習
把Chatbot跟Chatbase學起來
但現實是殘酷的,一切比想像中的艱辛好多XDD
不僅每天都為了發文而煩惱,害怕自己想不到內容就QQ了
更常常因為隔天要發的內容還做不好而熬夜奮戰
謝天謝地還是撐下來了!!!
還要謝謝寫分享教學文的大神們!!!讓我在無助的時候受益良多XD

這30天確實在製作的過程中學習到了不少
不論是堅持下去的精神還是程式的能力上都有提升
足矣足矣
雖然鐵人賽結束了
但期許自己今後也會保持這樣的態度 繼續努力!!!
謝謝大家

當然還要感謝IT邦幫忙辦了這麼棒的比賽!!!

/images/emoticon/emoticon41.gif


上一篇
Day29[Chatbase]Facebook Message API
系列文
ChatBot&Chatbase30

尚未有邦友留言

立即登入留言