顯示具有 chatbot 標籤的文章。 顯示所有文章
顯示具有 chatbot 標籤的文章。 顯示所有文章

2017/12/24

第五天:認識 Line Messaging API Webhook( 2018 iT邦幫忙鐵人賽-只要有心,人人都可以作卡米狗 )

markdown 上一篇:[第四天:認識 Webhook](http://etrex.blogspot.tw/2017/12/webhook-2018-it.html) # Line Messaging API Webhook 運作原理 不囉嗦直接上圖 ### 訂閱階段 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVAjvNrQDHsHH5Ro4Fif-Ia45ZUz0IuzTKRcdS5_CfuYi7oSk-Khya2OVtS80PS6ZzMUeixa-P5bcc5ky_MyxMyKfBVyv3XYh9NhF1caLW_8PO2nuWFvPtqG4PQ3gXL3kmzrhcSTTzj58/s1600/%25E8%25A8%2582%25E9%2596%25B1%25E9%259A%258E%25E6%25AE%25B5.jpg) 這個階段是我們在 Line developer 後台填入卡米狗的通訊地址,然後按下送出。 ### 通知階段 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9-rAJfftkPnz2gbmPrr8VMZK3E5pvHThgKhfzhTMskEWB1zxotCjg5Iio8dWXLkbDAUO7iU-gSH-vIN9KUG3rhvvkzpKJZra21HWxTaT6_myDD5wdy8NwrxGJg2wDS7cfY3XYZTfCkBU/s1600/%25E5%25A5%25BD%25E5%258F%258B%25E7%25BE%25A4%25E7%25B5%2584%25E6%2596%2587%25E5%25AD%2597%25E8%25A8%258A%25E6%2581%25AF.jpg) 這個階段是當有人使用 Line 傳訊息給卡米狗所在的群組,就會收到通知。Line 會把這樣的訊息傳到我們設定好的通訊地址。 ### 行動階段 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLLQii2gGb9An6drl3BljpZ0xX9T9EIfaNU20ZSXH1NqaMZCdyBS5t6oJsN86wX7dQn3lwLU9KZL5lx5JJDFMPoULLNZjgp-7x9uDCflUKepXlTDCFyXOrUj3pscATNu8OISXUndna9Lc/s1600/%25E5%259B%259E%25E8%25A6%2586%25E8%25A8%258A%25E6%2581%25AF.jpg) 這個階段是卡米狗回應群組訊息,卡米狗會把訊息傳給 Line ,然後 Line 再幫我們傳到群組。 所以 Line 扮演的就只是個傳話的工具人。 以上就是一個完整的 Line Messaging API Webhook 運作原理,每一張圖都代表了一次 HTTPS 協定的傳輸(一個 HTTPS Request + 一個 HTTPS Response),在這裡你可以注意到全部的回應都是「好哦~好哦~」,這是表示簽收包裹的意思。 圖中的#01、#02表示一個代號,用來做識別用,同一個用戶會有同一個代號。就跟唐伯虎的代號叫9527一樣,在我們這裡不稱呼你為唐伯虎。「[9527就是你的終生代號,開始做事!](https://www.youtube.com/watch?v=eNfVcWJv96I)」 # Line Messaging API 的各種通知 ### 你被加好友 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPVdeULH-i7h4k8n3F7cYCWBEnhNVnsxt74Vz9igdyws-2io_jAU9-zms-VOzMvbNCFn18N16vKuaflxJKzk9dcDWjVYIrR0bum9fr-2IINoWR57YoSvhG6hAYKjilhUfQdCwZ3fjJ2vM/s1600/%25E5%258A%25A0%25E5%25A5%25BD%25E5%258F%258B.jpg) ### 你被封鎖 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx8xEH5iSzFJKZAJqSmXYXgGIajpArk49q7HMeAkze0msYG_eQpbmmztMm6hEYicgkJvvIVm_G4AQidT0pjRUBEFj0WWU4mVWQbL7q65DbTW20YA4z_j7SJYqD8hoP4PevHSbkWbV4bIY/s1600/%25E5%25B0%2581%25E9%258E%2596.jpg) ### 你被加入群組 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3w2HkF59jdwSeI4NIO9yvzLdF-GVaLVtxRGNdFEPltADmHZByawpzhXfY-6pBDCnuiVlp06ViJ1pM4fzGjln0vwCl8kXJwPTQWTZPTYITzgMfd-XIytfvBwfhrUsT7UEPHw0h8l7hmJU/s1600/%25E9%2580%25B2%25E5%2585%25A5%25E7%25BE%25A4%25E7%25B5%2584.jpg) ### 你被踢出群組 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlAtI3pWf47yeY6qbmqRmH72x4dK4a0yy-7kY8yG9D0NwN2_adDLCgc6CIRwk_q4FUID5gWYr8J9Ro47s1EvQJIHiwJlUP3l73JBRSmnej7MeJMhggioEdlSe0bS3uh2-UPzLg6Bnr2R0/s1600/%25E8%25A2%25AB%25E8%25B8%25A2%25E5%2587%25BA%25E7%25BE%25A4%25E7%25B5%2584.jpg) ### 有人加入你已經在裡面的群組 沒有,沒有這種通知,所以沒辦法在有人加入群組時讓卡米狗跟他打招呼。 因為 Line 不給的,你不能拿。 ### 在聊天室的陌生人傳送的文字訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoLvADzPXLO9h4UF0a2v988IA6aFxq4CvlECRDup8ScHZ_NW6_5VNG4TEeikatK2amDn-Gkpjv47WLJCpY90mqfLJRFlArtT4tACCENLpqzM-_AxS8Zu3iF59esQIf_SgV31gsbtp8dr0/s1600/%25E9%259D%259E%25E5%25A5%25BD%25E5%258F%258B%25E8%2581%258A%25E5%25A4%25A9%25E5%25AE%25A4%25E6%2596%2587%25E5%25AD%2597%25E8%25A8%258A%25E6%2581%25AF.jpg) ### 在群組的陌生人傳送的文字訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYOGMHVtZImJiVeJ1X2aUBCyOMYYTm8iw-VEIKgetMb-BtQtEnm4gfeCWwNrYRmc07SFgo7DEDVjhzwjYzIRhhyOWtkHj_B-r7E3pma6YGF0r-yKDBQtZ2MaT2ll820sHS0nALjHj1K9o/s1600/%25E9%259D%259E%25E5%25A5%25BD%25E5%258F%258B%25E7%25BE%25A4%25E7%25B5%2584%25E6%2596%2587%25E5%25AD%2597%25E8%25A8%258A%25E6%2581%25AF.jpg) ### 在群組的好友傳送的文字訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLIsUkv7VHeS8QxNbxMTXFuZHS14YamgLorswASeaSwNQWg3PFE1iDQrE-aaulGEvKAM6cQ2IusrXawkRzuL6AIZ3kKIL3gsaf96fqg39xBTVHPpvC1oogCvao-sEWvbUzsLe0z4PyBHY/s1600/%25E5%25A5%25BD%25E5%258F%258B%25E7%25BE%25A4%25E7%25B5%2584%25E6%2596%2587%25E5%25AD%2597%25E8%25A8%258A%25E6%2581%25AF.jpg) 其實這邊的好友是聊天機器人之友。他不一定有加你好友,只要他有加任何一個 Line 聊天機器人好友,你就能知道他是誰。 ### 在私訊的文字訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW7QDgJUxqTwQrIQAQAzBKfWWhtU1TqWomiP5G09vivHVtEy5KsIyKXs8sdDLXjpsPiFegPU8hfWxcGuaAMiuIGa4XT7Pr1UVGEOMh88YmbjG1Uz0UfI76Kp5x1WYL_44ZlvYkAuD6eXg/s1600/%25E7%25A7%2581%25E8%25A8%258A.jpg) 以下就用私聊示範各種訊息類型: ### 貼圖訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxbpZy-pZkJJLAop1qywO99yp0wpIrcBJ-woEBBEv1arRthOIXGITS6BArysGtbD-VK9gqadPz5T75E8NUICmpJdt04zofsAFh6HmGxy55wm5ji7bPh-o055S3L_A1_xq6BgTF-BshPpk/s1600/%25E8%25B2%25BC%25E5%259C%2596%25E8%25A8%258A%25E6%2581%25AF.jpg) ### 圖片訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOAPQRTyG7NiB3eCsHtrRtoFyAIrdKc7tmeAj6NhBDukIdYgmZAB1MDlsru2mebqneGlvys-2BmZ8tPi-fIcXsbIFC0XBcqVkg0zSROWZAcoENjRZdXD54_JQfxVOCQlfcui4kH8yRjAU/s1600/%25E5%259C%2596%25E7%2589%2587%25E8%25A8%258A%25E6%2581%25AF.jpg) ### 影片訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrANXA4cJjpM1KfzTwBOo-xBche06kCutzb5w9wXZHavKX_15aKNVyDJ8lbt8fx9zeAYLVoBB9zQ8N016x8xD2pu_zEP-k9eqR2IWqbW67S6cpOXzgZsmwLY_MiFvxWdCtbIWiOl8Gdr8/s1600/%25E5%25BD%25B1%25E7%2589%2587%25E8%25A8%258A%25E6%2581%25AF.jpg) ### 聲音訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtJysfxsNI1GsqlsW19jzcjd89IjmMPbEwL1QMo8EUfGmzyavJ6z0Q85Dgocelk7HhkqAo4f7H20y6WHY_KJpvGX8ep5Z4YXi00GoCbnZ2lPtUofPs1eM3Ll8pXKY3auadKEpQaU2_7oM/s1600/%25E8%2581%25B2%25E9%259F%25B3%25E8%25A8%258A%25E6%2581%25AF.jpg) ### 檔案訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdmEHG312m64Q04UkZqC4L9oQfauOFZynNQyOHvWvsV89F4IQisPlFjon9iy127g3i2FqRFZLb4lU0yZVsfm0jRP1_b65PSBVErur-lpG2pU6Iei06TMuGvORAAbbEkPTykRRPXZYJ1aQ/s1600/%25E6%25AA%2594%25E6%25A1%2588%25E8%25A8%258A%25E6%2581%25AF.jpg) ### 位置訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg0vsDpMO93vwVsJK6BGoREQYKDUO6tvV4V_1YKf2EW50qUnZKE43gRSbYGCuctxCp5ZNuvDw0LKrISBNSfRR0pEg6CU7sDnZq5Mq8DhOEf2A5Xf3KkH77Inl-2hXPRoz-pdESeWBQ7U4/s1600/%25E4%25BD%258D%25E7%25BD%25AE%25E8%25A8%258A%25E6%2581%25AF.jpg) ### Beacon 訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwuws4sX8tYauRiY2wa9bcyotiXMCicaWfbAXIdfQbalNUJcG8r9OfZQ_xfx7dvlzZmvMky-D1zd9bDYRSFV6Eh6ELkT1m7-aEXpWy2V4sEh-_VUvyGdhaKPSDGBvh3vbuzcy37lZO_z8/s1600/BEACON%25E8%25A8%258A%25E6%2581%25AF.jpg) Beacon 是一種感測設備,如果你的手機有開啟定位功能,接近 Beacon 時,就可以被偵測到。這技術被用來做微定位,位置訊息的誤差值很大而且在室內還有可能無法定位。若在一個室內安裝足夠多的 Beacon,就能得知這隻手機的準確位置。 ### Postback 訊息 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9MRgtNpaQu4NTP1kVVf5qFZ7PAWv9K7LzMGsY9s3gafm2vF1Q4Ge7islYvT06a0HQROLe7EIZobTiSn1dxsnbUlZDzKa-s-RIrebjcom4bBstHiwuNMo4-jO-Rkz_QiKqgxdh9T7ncpM/s1600/Postback%25E8%25A8%258A%25E6%2581%25AF.jpg) 在你傳送含有按鈕的訊息給用戶後,若用戶點擊了按鈕,你就會收到 Postback 訊息。 以上全部的「好哦~好哦~」都只是簽收而已,還沒有回應訊息,下面才會講怎麼回應訊息。 # Line Messaging API 的各種行動 能做的事情蠻多的,詳細的以後有空再講。今天先講幾個重要的就好。 ### 關於回郵信封的使用 使用回郵信封(Reply Token)就可以不用花錢,在現實世界中是這樣運作的,在 Line Messaging API 也是如此。當你獲得一個回郵信封時,你必須在30秒之內寄出回應。因為回郵信封會在 30 秒之後失效。如果你在失效之後才寄出信, Line 就不會幫你傳話。如果你不使用回郵信封,就得買郵票。 準確地說,Line 允許你回應訊息(Reply Message),但是不允許你主動發訊息(Push Message)。如果你想要主動傳訊息就得付錢。那麼到底要付多少錢呢?他是包月制的,如果你在建立聊天機器人的時候選擇 Develop Trail (試用版),那就還是不用錢。但如果你選擇的是 Free (免費版),免費版要先升級成進階版才能用。顆顆,你每個月至少要給 Line 台幣 $3888元。 超貴 der。 ### 傳送訊息 一次最多可以傳出 5 則訊息。 ### 文字訊息 單一訊息你最多可以傳 2000 個字。 回覆訊息(Reply Message)的情況: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikemBnCFn8eoZoknvgEQFCqjz-t8xlPEt97FMj16boum5NGuzBvupxWvW7ND_pwn2wn6OxZNRJE5v8GIRyo6s5nDM5bOhm_8znFhNulnS2nZwP6ecXgo4JJ1tA_iDZqE-cqF_XLnCqfwQ/s1600/%25E5%259B%259E%25E8%25A6%2586%25E8%25A8%258A%25E6%2581%25AF.jpg) 使用回郵信封(Reply Token)時,不需要指名傳給誰。 主動傳訊(Push Message)的情況: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcpyczNsTz7jgXdTp4h4l4BCsuPnmFSZaTdaEKGdsc532pydu6ureb3zIglyL8xqvAwjp-P4KfrN-0gX2jMKPgNPy-_qNXUs_uhvdOeWxKaK4dZnmRrZik4VnIeYpuj9VNoxEz2MDPxDs/s1600/Push.jpg) 不使用回郵信封(Reply Token)時,就必須指定要把訊息傳送到哪裡。 ### 貼圖訊息 一個新的 Line 帳號有四套貼圖可以用。你的 Line 帳號也有這四套貼圖,就是饅頭人、熊大那些。聊天機器人只能傳送這四套貼圖裡的貼圖,不能傳其他的貼圖。所以我覺得沒什麼搞頭。 ### 取得用戶基本資料 你可以拿有加你好友的用戶代碼去查詢用戶資料,你可以獲得他的暱稱、大頭照網址、狀態。 ### 取得圖片、聲音、影片、檔案內容 你可以拿代碼再去查詢內容。你可能會問他為什麼不一開始就給你?因為這些東西比較重,而且你不一定用到,或者你家可能已經有一個一樣的東西。一切都是為了效率R~ # 講一點不是人話的東西 其實哪有這麼爽,做聊天機器人這麼容易的話,大家早就做一堆了。 上面講的全都是擬人化之後的東西,實際上是這樣: ### 前方高能注意 當有人私訊卡米狗時,Line 傳來的通知其實是長這樣: ``` { "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA", "type": "message", "timestamp": 1462629479859, "source": { "type": "user", "userId": "U4af4980629..." }, "message": { "id": "325708", "type": "text", "text": "Hello, world" } } ``` 請保持耐心地讀完,容我簡單說明一下。 ### 認識結構化資料 因為傳遞結構化的資料,對於後續處理上來說會比較有效率,所以我們(工程師)通常這麼說話。 從 Line 傳來的訊息其實是: - 回郵信封:"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA" (這是一個亂碼,請勿嘗試讀懂他。你看不懂是正常的,因為我也看不懂。) - 通知類型:這是一則訊息 - 傳送時間:1462629479859 (這是從西元19XX年到目前為止經過的總毫秒數) - 來源: - 類型:這是發生在私聊 - 用戶:"U4af4980629..." (雖然這也是亂碼,但是我有注意到一點:開頭肯定是U,應該是代表 User (用戶)的意思。) - 訊息: - 代碼:"325708" - 類型:這是一則文字訊息 - 文字:"Hello, world" 簡單一點的結構化: - 發生什麼事:有人傳私訊 - 是誰:"U4af4980629..." - 他說什麼:"Hello, world" 用人話來說: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5-tKrEB8pdPriZdkk68vwUJ93s39tKFaXiV6R4z597zbLnba_-pCfDiPPRH48FOurgvDkFrtrN3BfvCFH0pxNft2UjU-4Tp9ZytRRopJSXQCjDtNybFC0qR8rzhX37QhQDoQN1ZFBeGU/s1600/JSON.jpg) 卡米狗傳回的其實是長這樣: ``` http_status_code:200 ``` 用人話來說: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVIr7kEh5gUoGyvjzu9MRMuyZXenxg_YQ-rnsHaFfk1p5h9vTDik_e3srzAoJrcwFX9QOc16Q4832Qy55KGk_2ase2J-8G3mFP5QUVOFPYP6SVMqRzvRGB-snKX126_j0d38N6Cmsrcxs/s1600/200OK.jpg) 因為很重要,所以說三次,這是表示簽收,不是回覆私訊。 你若有心要學作卡米狗的話,就得慢慢看懂這些東西。 雖然這些東西會越來越硬,但我會很溫柔。 # 回到訂閱階段 最一開始有提到訂閱階段,你必須要給 Line 你家地址,他才有辦法寄通知來。 但是你家是一個網站。你有發現問題嗎? 問題是你沒有家。 怎麼辦? 這表示你需要蓋一個自己的家。 明天會講架一個網站需要哪些東西。

2017/12/22

第三天:作一隻最簡單的 Line 聊天機器人( 2018 iT邦幫忙鐵人賽-只要有心,人人都可以作卡米狗 )

markdown 上一篇:[第二天:認識卡米狗](http://etrex.blogspot.tw/2017/12/2018-it_21.html) 我們今天來作一個最簡單的 Line 聊天機器人,要完成這個目標,我們連一行程式都不用寫。 # 建立 Line Messaging API 帳號 ### 第一步:開啟 [Line developers 首頁](https://developers.line.me/en/) [https://developers.line.me/en/](https://developers.line.me/en/) 首頁長這樣: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU3d95PUfPvx_pN5tC_N39EC89xZmKAyHOxjqhqoM8OJY7czagCzYjqWA3H9Anchd3yxIVcmug-gdTrE_5fT4eBDnJ6XgisRfpWehyphenhyphenYfyp9seSeeusscQPG_6OhAP9B7D136y8HPY-8UM/s1600/1.jpg) 我們把注意力放到右上角,看到那顆 Log in 按鈕了嗎?勇敢地按下去。 他說:請輸入你正確的名字(Name)跟信箱(Email address)。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCVbDiCPlEEN8KZaUdODDny7V7jSM5PLQnN7be-5X_icVCeBCPzgZgmRyG9ezsO_7yL9TYQ7bEH1TJvCEWft6Maf94fKrXvr4oll6-O_k5GEwAiiRmx8Lrv3d2EM4aWiUGht2aAJkoRO4/s1600/3.jpg) 填好後就可以按下 Confirm。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhraaKYLTTVHPzXlsHNnjF4hdpKCpUCwr-x0Yvx3FwOkqbAyQXeVLZAazoQYJHG1wlmL9gqBAjH8WKT9z5fp0JE8q8aw_ZjE2A2gJIfHKp8d6HCW0nUreBsZRoj9r5TLxrxFxHMbIQW6Ec/s1600/4.jpg) 然後他要求你再次確認你沒有亂填,當然我相信你沒有亂填,這裡直接按下右邊的 Register 就可以。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdk7H2w2j9IL9z0gc5ZQd5eOXMuChkrfuk9S7Mzw-_K9muh93keP4qPV1OBcwfGKgpM2l_i4dcUfK_9s-H6IRvE26VWlHLJdruhzbX4Joq-QnyXIMrLkrdaRjPMpQN-buVTf5glAxEaWg/s1600/5.jpg) 恭喜你成為一個開發者,這邊我們直接按下 Start。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlCsMUYR177InqW2a0Y2vCIalSfTfSwRrhRUaYr10IsR_ihO3ZyB_WT-OQjiD4_f011A3_8JMQFRuMEviyRgeew3d9_G7sNwUsaUZsaMOuAXFfYDhyUx8nI7CfbbbZMYXN0pZdXwV5m7Q/s1600/6.jpg) 玩到這裡你應該會注意到一件事:如果畫面上有綠色按鈕,按下去就對了。所以這裡我們按 Create provider。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU-UlNN-k52Wm37BvVSicI9t1tQctFOkUPjv_Vs0pW5qOzJeSrHvJ64B2mdg0QoS1H4BqQxKLEd2o9fMy0hqhODAYc5sZjTfqGTrTETBnTGOOy1wy9Jy8eVSX7vZx_RzTtNbBaeGO481c/s1600/7.jpg) 如果你有開公司,這裡填公司名字。沒有開公司的話這裡就填你的名字,填完按 Confirm。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrH_EiWZfhyphenhyphenmRZ6kUwwXgY95GUvhrI8Zq4b2bsWqDlGM-YDDcP7Wqc5cSfjHVj4MeJG1HMl7JMBEzh0DfivKkmgHdvKF4pAQP5hgGKa5tcevAqPHv5Y8OMiixyf5la2nzFU57QSMBs5NM/s1600/8.jpg) 又是再次確認畫面,按綠色的 Create。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgePf4YZt3c9SNw6fnRWvnCxU5y7rQpLMDGPf9joNf9AsMzzB89Rz3BYk1h4w9dV4ZV-03iMRRMYejkB7AW7vWngcWpZzNNH05eugOiLuWpxJA3rDry19BEiFJq1OPJwPEqwdkW7LSvXkM/s1600/9.jpg) 哇!這裡有三個綠色按鈕,該按哪個呢?答案是按右邊的 Messaging API。 從這裡開始,我們要填入的是聊天機器人的相關資訊。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3c_zWhaE57TP1xWjaOxCekI4GTXkAkaYYkz314iZhFJYJaqazQ3f3xQvd40O0Uj6dclMJOE5B1vJZ3Mw81635hvj3vUivZAUj0YktC4utiP7zk2AOcZoSCEfI4Crv5WFjyN_g8QHWMEM/s1600/FireShot+Capture+54+-+LINE+Developers_+-+https___developers.line.me_console.png) - App icon:聊天機器人的大頭照 - App name:聊天機器人的顯示名稱 - App description:聊天機器人的簡介,不過這欄隨便填就可以了,因為好像不會被任何人看見。 - Plan:Developer Trail 是試用版,Free 是免費版。當然試用版也是免費,差別在於試用版只能加 50 個好友,但是可以使用加值功能,建議選試用版。 - Category:這個隨便選 - Subcategory:這個也隨便選 - Email address:這裡填信箱 我的填完之後長這樣: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfBnHnpp2uXbytTBof0AckqcIwcxqud1GCRGQJ6yBxKM1bKYnYVbLaVsYAN5T08kr9JdwO6r-QR6kkDTzG8xBBu6NDM2yiuz8j4tEMyfVrwG2-7J14VjyGkfhLJiX3rYRoZU9VF4vtQug/s1600/FireShot+Capture+55+-+LINE+Developers_+-+https___developers.line.me_console.png) 填好就可以按 Confirm。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuuDZIvZQJuWvfFYLzhD-Jvyey5zbnbkt7-FGfoqsEEAm0450d7eDo07Jde5Z1XfYaGpzOdipQ_P7HxFbvzgb10XqyFvQoyxx5AxmR3ijeWCUn658HSJCG9gfgbkSV9jlVDXm_TvIWWH8/s1600/FireShot+Capture+56+-+LINE+Developers_+-+https___developers.line.me_console.png) 不曉得為什麼, Line 很愛再次確認,這裡有兩個勾勾要打,先打勾再按 Create。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ2_XH0KhrdXADmoa2rh_F20wtBD_As08hnY-XxFO50vzwNMapOS2ehAzkI07Z1xTCDvkhQuF6ClFGQk00hGVa6iiSVL1ZFhvuXlPD91_vy7SXitiFhSnkEsDrBjKRvdy08AVsZXv29As/s1600/FireShot+Capture+57+-+LINE+Developers_+-+https___developers.line.me_console_.png) 終於創好聊天機器人囉!點進去看看,這裡當然就不是點綠色按鈕了。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3XZjMyscOj4utNdvFPx_SGEudlb5hqhBunLq4t20lR63NEDeCa1o3piq-kQ4gXId-4X9TE3DDkDMhMoi7RX4PGZZpc57hvIQ3FUMtJdd2WJZN2QRt76gVRSSOsUeeenmmEiv7RzgoEvg/s1600/FireShot+Capture+58+-+LINE+Developers+-+https___developers.line.me_console_channel_1553191554_basic_.png) 訊息量很大,不過我們直接看到最後面有個 QR code of your bot。 # 加入聊天機器人為好友 拿起你的手機,作行動條碼掃描。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDAaeQSEM14nyoJPe9yQZUZD6uQmVchColbASiFDdeVqQLA3P9PRIaHD-Un_RBNG9Am95ziimhRR5ewmHqw59O_ef1bddkb62GOMAeWj2vZjyH9vOF6y-W4Lla-aXbhJYQShaGSs3lTm8/s1600/2017-12-22+00.52.31.png) 點綠色的加入。 # 傳訊息給這個聊天機器人 點進私聊畫面後會看到他傳了一個訊息給你: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYNrAYKFm7DPAcS4k05z-rCOLXvMO1-63kjW2OePjrxsM859fJH4svTdeZNqGJywEKe4hR-A9rs9_TZVwAyLmnDpUSN_DDoFq5AZYXEviAiWRnUwam_YzMRA8bqxc6tLSxgIzhO9fIrnA/s1600/2017-12-22+01.09.06.png) 這是歡迎訊息(Greeting messages),隨便跟他說句話先。 你應該會注意到沒地方可以打字,這裡要先按左下角的鍵盤按鈕,然後再打字。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgio6xyjLzvm-pylg7XrSLQmx6HrWKIeTVNNB8DQYYj9mZxRYetxyhX9aFPXZBJXpZ9o5AGlY9EHuqAxJX6XQ5Kc3WpWjOU4H45ZnzG9aLbjDhbFkhl8SEMdtcwql-cB72YWdfPaSIDN2c/s1600/2017-12-22+01.11.03.png) 這是自動回覆訊息(Auto-reply messages)。 最簡單的聊天機器人到此完成!!!! 但是要怎麼控制他呢? # 登入後台修改歡迎訊息 從這個網址可以找到剛剛創好的聊天機器人。 [https://developers.line.me/console/](https://developers.line.me/console/) 跟剛剛一樣,先點進去,最下面的 QR code of your bot 再往上一點: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJJIULDLID4W86pu34HKv_uV_pwM3GTYbo75svjGxcOxZ51Cl0y6t7fYyawuSU1p1Be8Uvo-GwofhUdMIguv2FV1qo7Vrw6xRfxm0ZwRQtjVbGvK8pD3TS5sziqYP7vYRbQH8UHGTu9Dg/s1600/1513877097033.jpg) 這裡可以修改歡迎訊息和自動回覆訊息,這裡我們先點下面的 Set message。 你有可能會看見要求登入的畫面: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgml2ReFzC7rnaaYIKJA5lOOPmQRshM-CJHDOWif4xBJ2Qlz3x3bvMdwpAu9lO4N3N2hUc8SB3pf8X-DI2OAIiMrGI_iuZ5sWERe63amP7DzloPTz37Yh7smGKCNSJXKAfJHaT0UQ_b37M/s1600/1513877366762.jpg) 或者直接進入招呼語設定頁: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji1lwERY0ZM4AG-5mUpqxkPF5xJrxkeMNT9qTKna1FgKMKrfb-Mh7LxL9orx1zkr_NvMGzVuW7z-iSO1h9XCdZWuOKxNVTZ79iC9PZDmaRa3tJ2TZ9B-UoGvx9Ef-9vRN9rxuAvJ98IuQ/s1600/1513877331470.jpg) 這裡是全中文的,是因為這裡已經是 Line@ 的後台,而不是 Line developer 的後台。Line developer 的後台目前還沒有作中文版。也就是說,我們剛創好的聊天機器人帳號,其實是一個啟用了 Line Messaging API 的 Line@ 帳號。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUYoFfLTBeTFEsBK46dU2PhthynAiQTVza5NZbjWQaCdyP6hUK3rmj5vWqYIBf2DuLhmQOXa2Zf6TqC7wYsUAtpVuYkunsi3kTREAdwlVq6XlQ7dqZ-vO2LdgOHd_1DRfOinGoLvAGamo/s1600/1513877784112.jpg) 稍微改一下字之後按儲存。這裡我們需要測試一下剛剛的設定有沒有正確運作。 測試的方法是先封鎖聊天機器人。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiII255fNrJ3HWSpqd3C9c6zhvwCUWUyVDkDq6jLy0myxI18gqyzBXnq4kXNHYl1UrxWS75BJygGWxABrgFn12XdIDsVeKAWRIqCTQ8lGZPDDMVOe6rr7kjDq0wWJGFQgSACXqlnXNaHok/s1600/111.png) 再解除封鎖。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMZ2hyM5L45LjldKK8lvHkYk2zGgf-yBODhLvMKKOTa0ko5U_m-uhveHAbmMpcvyQTGjFisVaPKqiTZMIEqluV187NWC7jewm0ussboIlMBvJ_oQz4AeBHTZak6-9fH85TxYmwVnc712w/s1600/112.png) 成功! # 修改自動回應 我們不用回到 Line Developer 後台,直接點左邊的自動回應作設定就可以。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE0_X3NPjIJENI0BBUmfJZWpIzq84WpCUYQFn5cV6nMwmC-ykNfMaW3bgTdct1oNV1HHvjCBcYt4RI5nao2_vFhWH9gJdtbIL2oG5-2JEzh8HlR9QB6kv-DcUBKKWKNk6x18j15tjM-Jc/s1600/113.jpg) 點擊後會看到這個畫面。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmtjGWRaQ8SFzTfT3iOaXNyxKbKje9vYCy6ZKvz262ixlonEAWTwrFBPfOpAeU75ooXygSpMOiG7Wq6rv6eMH2aZuuLnb9WE8zfHBB0c8_qQXAjqrw2-4TMGu7iTlSraBlBZPcubY1NHI/s1600/1513878410265.jpg) 接著一樣點紅色箭頭的部分,修改預設值。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt2P5tgRpKXPLvMJDstiqWQIeidNBwyhUyXxifPpbZPhesicnAbTjqbzdNhUWSUF4yrgwYaLqGOL_ej14gEpw4XtiRdFMOctxoGu3Lt1PuTC6lGFno0mq8AOQRkpQ7rykhPd18ouNpFnE/s1600/114.jpg) 這裡就隨便填入一個幹話。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp_DZFPneLk-dkO73Ld9LdBm3Gcg7p7pkDlcKzFvum9ZD4Ysv3PtCNWDrJjJharxeQpUY7zwmVWxb9xyAI_W2lsNMv-Wusn_8npZkjbkAtTXlr8JtoAWPQyjuoWmYRJyLA5wBbeIXuPcA/s1600/115.jpg) 按儲存,然後試用一下。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvDAxKCLPfgAUXCz1itI6tV04WI4YDjntUxTjXc-6u1K2LDlDJZmbp6KlNJ_aEyu0CjT0Nbo1BlbhVwQShCHmPdH9U71vvfUFpWVynVJQeEZsg7Sdob4PP5c8jiqIPwlQ_Dihv5ap7tM4/s1600/116.png) 馬上就變成幹話機器人。 # 新增關鍵字回應 如果你都有仔細看,應該會發現左邊有一個叫作是關鍵字回應訊息的,剛剛應該很想點進去看吧?現在可以點了,點進去長這樣: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJO7amgbX00nY7yjWo4CD8JOc9lUacApjbGGKBT88dnCR4_9S_gHkjd3P4Cg8EkXnLMO5EqQL7jaqF-OtIAdSG8nnkqLxvgoItNEpUKzKpJqs1w4ACi4hQpGV2_gMWLGqrSh274mfP8tM/s1600/1513878951876.jpg) 我們點綠色的建立關鍵字按紐。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja4mVJ2Pha85KCTuEe6WQ23NxoMrKRKMnzr7cNQybMLjVJKLlpFw5xFB-S_0tIS1VsO37fHzEttvC_RLaTHo-dNoQXvrkWS_vXHHsbnJUBgNT7t7qlzCFs_mURiS5JBWB-VswrEDBw1G4/s1600/118.jpg) 在代表關鍵字我們填入「QQ」,然後在下面一堆按紐的地方點一下文字按紐,接著在文字區塊填入「我難過」。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6h9zwn2iwFlk7Ot9Ky8FKd7nnHC3Cc3wcBYOmOgl8W8h7ngZaBkH4-U1pJwzqwqieqzeN2EoB3I1Z0CnLG52Nn1yYV7xhyphenhyphen5gQZl6Za013oFH6Ci7U2zlVR-61FajFVO7hQx3Qa2kNCj4/s1600/119.jpg) 然後按下儲存。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2vQqcYQlVyNQSZGZ784PFJu-DjA0N82_Ipb8DoFwJTrur4NYI1SDLyioUbmHAp64edcDn1p8VzGlyBYVkgxRIhQYsDApCFvksWBfXwTLfYQPC6AmXb9i4gl_7sHuAEZ-CdHWf6GSqayw/s1600/1513878791635.jpg) 測試一下結果: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRQsFxXUGxNRpnubJMQr2F6Obag9q_wGn-1JKJl6OEMP5RGWotOIlZPBv_3jp4dlV6wxnVllybnt0I0jO9j1Ie00rXAyRIzBb8pp3bx6kxPpP4i0d7sUz-plfnnmoxPskd1_aFl-cZYOM/s1600/117.png) 所以關鍵字回應其實 Line@ 平台已經作好了。 對的,只有作者能教的卡米狗這樣就完成了,你還能自行切換大頭照跟顯示名稱。 # 怎麼讓聊天機器人能加入群組? 其實就在剛剛的 Line Developer 後台,再往上看一點。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc3VOHh9G_Z-pAiZZ84rVo1DRWNjOcap0LM_IZjDSd1quO41e99WZHjMZqwv1RgM9QkbJd7ysP1JrNQG-h8zsHoicFpNdZ07shXLROXtlaIaXhbOoC5FXivd5zftO72o1UPoFZYVt3fYs/s1600/120.jpg) Allow bot to join group chats (允許機器人加入群聊) 預設值是 Disabled,我們按一下右邊那個鉛筆按鈕,改成另一個選項,再按 Update 就好了。 # 怎麼讓其他人也能加關鍵字回應? 要像卡米狗那樣讓大家都能夠透過對話新增關鍵字回應的話,我們需要使用 Line Messaging API 中的 Webhook 功能。 明天會介紹 Webhook 的運作原理。

2017/12/21

第二天:認識卡米狗 ( 2018 iT邦幫忙鐵人賽-只要有心,人人都可以作卡米狗 )

markdown 上一篇:[第一天:認識聊天機器人](http://etrex.blogspot.tw/2017/12/2018-it.html) 下一篇:[第三天:作一隻最簡單的 Line 聊天機器人](http://etrex.blogspot.tw/2017/12/line-2018-it.html) # 認識卡米狗 其實卡米狗也很想認識你們,趕快來加我好友RRRRR FB粉絲團:[https://www.facebook.com/kamigo01/](https://www.facebook.com/kamigo01/) Line:[https://line.me/R/ti/p/%40aab8659n](https://line.me/R/ti/p/%40aab8659n) Line行動條碼: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH6hHjW5s621kx6J70AxJEAlT63NT1oNFsXUlFjOQmAwB0meBryL78JoZiIKStMqGrlNjHfbG9EwnVfrqj6xA1ENl8j4u_pgcYfYUn0P7h78EC2aA1WRAvtjEXCTcpGcLln0R6Mm6qyxo/s1600/QRCODE.png) 官網:[https://www.kamigo.tw/](https://www.kamigo.tw/) # 卡米狗的誕生 去年9月時,聽說 Line 終於開放了讓聊天機器人可以進入群組的功能,於是我興沖沖的做了一個 Line 聊天機器人,取名叫卡米狗,並且放上一張幾年前我隨便畫的狗圖。 一開始本來打算要做的功能是資料科學相關的,比方說下列功能: - 發言次數排行榜 - 誰跟誰最常聊天 - 某個人的出沒時間(星期幾的幾點到幾點會出現)(誰出現了誰就跟著出現) - 某個人的口頭禪 - 誰是句點王 但當時卻發現 Line 並不會告訴你在群組中講話的人是誰,於是乎上面提到的所有功能都做不出來,不過既然程式都寫好了,那就隨便加功能吧。 哦對了,過了一年之後 Line 終於想通了,現在可以做這些功能了,但我還沒做。 # 卡米狗的各種功能 ### 影片支援 最早期的卡米狗只有一個功能,就是當他看到「我難過」就回應「[https://youtu.be/T0LfHEwEXXw?t=1m13s](https://youtu.be/T0LfHEwEXXw?t=1m13s)」,此時尚未引起什麼風波。至今已經因為無法輸入網址而失效了。 ### 跟風(推齊) 當時加入的第一個講幹話的功能是跟風(推齊)功能,也就是當看到有兩次以上有人說出相同的句子,那麼就跟著說的功能。當時在這種情況下,卡米狗會說的話並不多,但是已經造成群組某部分人的反感。主因是人類受到聊天機器人的影響,為了使聊天機器人講話,某一群人就故意複製前面的人講過的話。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXF3iXJa60DqXicKRRnr1GJ_nywMu1qNUYI81sF8faRqtAwoMPPIscJnDiNehnZ3Hk_bZ_1BNGxKNGT0fUa-JZKhiwcCsQ6tU_1lu0oVd0iwOIxkIRjc1KnYcrNlrrUgZ_S93g7holwz0/s1600/%25E6%258E%25A8%25E9%25BD%258A.PNG) 當時有人說「跟機器人講話很有趣嗎?一直洗版吵死了,這完全是在浪費時間。」我說「在機器人出現之前,群組裡面一堆人也是這樣推齊,當時你怎麼不講他們呢~?」結果他一氣之下就怒離群組了。0.0 其實卡米狗被討厭,他心理壓力也是很大呢。 ### 學說話以及關鍵字回應 因為影片支援功能只支援「我難過」,群友們就在問說可不可以加入「分手快樂」「柯南」「遊戲王」「棋靈王」...。我想「哇,如果全都是我來加,那我不就很累?」所以我就想到,如果能讓大家直接教卡米狗,那他們就可以不用跟我說,直接就教卡米狗了!這是一個很單純的功能,所以很快地就完成了。 這個指令是這樣的:當有人說「卡米狗學說話;姆咪姆咪;心動動~」卡米狗會根據分隔符號「;」得知當有人說「姆咪姆咪」時就要回應「心動動~」 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuMNW31JmBFQMenj69BfzN7P1Ev-wIHFscy3gTGrLh4-St6a7Y2KxPc0iWJLWx-7_jiwePGeXyOa6oFx_vfDDe16Bo1tmoNkyYiEsfzQfogfWC8jUxxAb2gO0Ds6EqRWfogoF5dpCPOEM/s1600/%25E5%25AD%25B8%25E8%25AA%25AA%25E8%25A9%25B1.PNG) 當輸入的指令語法正確時,卡米狗就會說出「好哦~好哦~」 我沒有想到的是,在這個功能完成之後,大家開始教他吹捧某些人、講髒話、亂嗆人,在此同時也開始加他好友,一邊在私聊教卡米狗說話,一邊在群組講關鍵字去觸發卡米狗。卡米狗在這個時期獲得大量的擴張,在一週之內使用人數就破萬。 不過後來學習的內容含有網址引起太多的負面問題,我最後還是移除了所有包含/的關鍵字,同時也禁止/符號的學習。 這個指令是有各種縮寫的,比方說「卡米狗學說話」可以簡寫為「學說話」、「學」,分隔符號除了;之外還有另外三種,分別是全形空白、半形空白、全形分號、半形分號。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp13blHqT0xJncC2qrlV_40szVsDWKTYOczMmfxq7X49bhM0P7yctXnqEbT4a0hg5p9Oj1LXlmNCabhXeaJxqsSpyhZBSUF0vABnd8_PPFbrANheztcrfDrWZSVcUm8KQ3wAA6uCHg_ug/s1600/%25E5%25AD%25B8%25E8%25AA%25AA%25E8%25A9%25B12.PNG) ### 見人說人話,見鬼說鬼話 考慮到多個群組都教了相同的關鍵字時,卡米狗應該在每個群組做出不同的回應,這樣才不會被討厭,於是就加入了這樣的功能。當有人說「姆咪姆咪」時,卡米狗會先檢查這個群組有沒有人教過看到「姆咪姆咪」要回應,如果教過多次,就回應最後一次學過的內容,如果都沒學過,那麼就再檢查其他群組有沒有學過「姆咪姆咪」。 ### 說話模式 卡米狗在幾天之內就學壞了,講的話越來越討人厭。為了使卡米狗不那麼討人厭,加入了「卡米狗 不可以說別人教你的話」的功能,這樣在群組內就可以全權控制卡米狗只講那些在這個群組學到的話。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNkTTgvaRHcxihf2OvYhdLxEg3E1L9DgvW8YB3KhD-XAeRb2NtH0efWGLCrn7M4YonVJlE9Xdt7ANs7FPNKrEBvBHy6oVnTdfPtnfQ9qTIt4IylaFWLnItqTCriMufC7CDYMuAg2FAi5Q/s1600/%25E8%25AA%25AA%25E8%25A9%25B1%25E6%25A8%25A1%25E5%25BC%258F.PNG) ### 目前狀態 當有人在講正經事的時候,卡米狗並不會很識相地自動閉嘴,於是卡米狗就會被踢出群組。為了避免卡米狗被踢出群組,我加入了「卡米狗安靜」指令,使卡米狗可以不講話地待在群組。為了不被討厭,卡米狗真的付出了很大的努力呢。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinK4ISH3wbf2oh35CQlGhggdvQMI6xAoJ5E0f0Mtxt8rdOj_ra1cl8X9_N46YI03O-DPjgXaWM2kVf5Y9Y5QADGDomcresqO8WGyJbO3zcx9iGFUYBKx76eyslmy3g3JgjDR4EL3ThGAc/s1600/%25E7%259B%25AE%25E5%2589%258D%25E7%258B%2580%25E6%2585%258B.PNG) ### 卡米狗 用的人真的越來越多了,而且後來才用的人根本就以為卡米狗會自動學講話,他們完全不知道其實卡米狗會說的話都是其他群組的人教他的。而且隨著指令越加越多,沒有人能夠記得到底指令要輸入什麼文字才是正確的,甚至連作者自己也不記得(我本來就記憶力超差)。所以需要一個功能讓卡米狗自己說出怎麼下指令控制卡米狗。 只要說「卡米狗」卡米狗就會告訴你他目前的狀態,以及相關的指令。 這是在 Line PC 版會看到的畫面: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsFAZ_3-mBAnYQDqSQAA4mF9pS7kdNOBLqTsZbPE6M9IXBny-4f553tbqAX48qFMbZTRZMwsW9tZUDeqA69oDgFtx3jWAU9BAGaJdhsUoDkAXXuE9Csa2gMpYzLCn6CcNu2JnGOuKwTZQ/s1600/%25E5%258D%25A1%25E7%25B1%25B3%25E7%258B%25971.PNG) 這是在 Line 手機板會看到的畫面: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTfx1hsCuCFUoC1cw0XaDBHQbSoiz9WTtXXbMy1epUfBsf-3m8jP2gKdKlnNURrUa-_8MSt1dD9TGflDm7i5m-ZrsjF3w8rxWWI9hyOHhLUYobhckSpFkbdmvLJ96Z05HzVLPOuvpwQnA/s1600/%25E5%258D%25A1%25E7%25B1%25B3%25E7%258B%2597.jpg) ### 你會說什麼 說真的,沒人記得到底教過卡米狗什麼內容,唯一記得的人(?)就只剩下卡米狗了。讓卡米狗自己說出學過什麼的指令就是:「卡米狗 你會說什麼」 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaOaZdejHtQBY1PJ4TF8XxECP-CSF3m86ohd4K9u66D-7F21St7-dPj_MzcAkuy_kYflxpFJ8UXFizEXnWTWrNigfNHvjw-bXEIB_pUGAwQlulw1xEwkQxH3IzyPVmLd9Kl6wJBvZ0O40/s1600/%25E4%25BD%25A0%25E6%259C%2583%25E8%25AA%25AA%25E4%25BB%2580%25E9%25BA%25BC.PNG) ### 抽籤 朋友問我說,可不可以讓卡米狗抽塔羅牌?我覺得可以,於是就做了抽籤功能,當然這個抽籤功能也是設計成要由大家下指令(而不是作者下指令)才能使用。使用方法是在原本的關鍵字前面加入「卡米狗」三個字,那麼就會從原本的關鍵字回應轉變為抽籤模式。關鍵字回應是會回應最後一筆學過的內容,而抽籤回應則是隨機挑選一筆。 使用方法: 先教卡米狗對相同的關鍵字兩筆以上的回應 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVPXFni4AUOas18p7v4Y7BIvNPspLd02chx1FLhvXV2RU2mmQ3GS6dJU2JUmcG6qeagctOqarIBx9i_HyJ4kNDtJA99wmPtIfXtelJyla3vBlXmYLahOOZGhIVORaBNczoWa_Cvnl8OsY/s1600/%25E6%258A%25BD%25E7%25B1%25A41.PNG) 在觸發關鍵字時,在關鍵字的前面加入「卡米狗」他就有機會講出不一樣的內容 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtqJgczFs6gptbTKGiyyBSAN_p3l6pz8X_vS-fduVCSRqKanmmtHGn_Eql952ak2Q3JR08yWLZp_nyhP1DyLdNEnKpNJr3BmOgLaYRvfqgGpFEbian_HjawnHYmMwgpSFB47u_e_RzA9k/s1600/%25E6%258A%25BD%25E7%25B1%25A42.PNG) 如果沒加「卡米狗」的話就會變成這樣: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPOswCUjeNHpajizi1rPlEugHr3xI1Bzen8nWByMc7Dkcf27dpN0Wp7OFD85Nwk4edMdnwzY8Hs3ZBlaWWS0jU7_5ojxNFuaNuvy5vNCqQL96GSSi5YMQEBZ5ZNa8SeDotzdpL06RiX04/s1600/%25E6%258A%25BD%25E7%25B1%25A43.PNG) ### 大量學習 由於抽籤功能需要重複輸入很多次相同的關鍵字和不同的回應,這樣的話,需要教大量內容的時候就太麻煩了,於是就做了這樣的指令: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2Gl-iJuvq2lGlYmSj9pj4IY3CTpsQMtypcvBKM5rTMQDoN3oIov__tvIgCaOucuclWYxYyXn127OPIzN8ymQz-5w6Mp5sZjl0NU-lKTnUzxm1wy_st6ZvtUu44HBHwjoMTM9kRg-7Y6E/s1600/%25E5%25A4%25A7%25E9%2587%258F%25E5%25AD%25B8%25E7%25BF%2592.PNG) ### 忘記 由於抽籤功能會使得所有教過的內容都有可能出現,所以你就不能用教新的內容去覆蓋舊的內容了,以前教過的一些垃圾回應就又跑出來,所以就需要刪除教學紀錄的功能,使用方法如下: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFDHxRln4XMaeIumA-OvyhzVPQ4nN7NGrighpBoMhfjkmTort7Q1o04wQCOBfsleEGdqPbqx5Akai-BKf_nJxmuYP064wWxt4wsB0NJxOHZadkBI8RXE2qeikaMuEOffOs-W5BVditWu0/s1600/%25E5%25BF%2598%25E8%25A8%2598.PNG) ### 壞壞 也是為了讓卡米狗不被討厭,卡米狗最有趣的地方就是他會講一些別人教的內容,但這也是另人討厭的地方,因為這些內容你不一定會喜歡。「卡米狗忘記」指令無法刪除別人教的內容,所以需要一個封鎖別人教過的內容的指令。當卡米狗講出了一些傷人的話時,你可以說「卡米狗壞壞」,那麼卡米狗就會將那筆教學紀錄標記為封鎖,下次不會再講。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiDJ3kDRsOxmiHGudUFjys2t2iKNo96q1__aKZyVtuVzvVZZnWHjBoyfhTydZnGammwe7njxT8cWcpuqcY99Oj497sWUES4zqj0n999I-HXY6sHjRo6oqZ8SvEJV1__18i3r-OXRairhk/s1600/%25E5%25A3%259E%25E5%25A3%259E.PNG) ### 查天氣 這是卡米狗開始往智能助理發展的第一步。輸入「天氣」開頭的句子,卡米狗就會去查中央氣象局目前最新的雷達回波圖來給你。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWXonQ1FIrjcX0lKr4g3Ky0nw-tvyNnANRigkJYh_QqD2LkMG8JNMrtwu_ol96Wf_LjBmIGvRBlRFL33yz-kMfwFcrYoDIRiHbSQR6fkZYBIX776H8XJzdo-v1q0DhdQaYYcnmyesyZGA/s1600/%25E5%25A4%25A9%25E6%25B0%25A3.PNG) ### 查 PIXNET 美食 這也是身為一個智能助理應該要具備的功能,輸入「想吃牛排」,就查詢 PIXNET 上和「牛排」相關的食記。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2ykUq1WNyWX8rH2UpS5HdcYDinSQoCas8EC9cv6gD8fexo3-6TD-OjJaMeAZoS3rCmpXmLh3CiDIvnuBDTyeTpkqrjwVWNladmgt5u_FFiK5q7PLxdTc9MjSjqD2QojlUewa7IZU4p-Y/s1600/%25E6%2583%25B3%25E5%2590%2583%25E7%2589%259B%25E6%258E%2592.jpg) ### PIXNET 文章閱讀器 一個好的聊天機器人最好能讓大家在群組就做完所有想做的事情。當有人貼 PIXNET 文章超連結時,卡米狗就會幫你把文章內容抓下來一段一段地貼給你。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhip6zuj8w83BQCHhK03bBpimbkTdhi_ItrEKmcGyACMbzxgQu1KzEiQXqvLjTMSR0pWRz51rdqjd69Q8Y9Ttx20IR4qm4xaG9CD8ebeiCpydsT9N_Y6pI1sLjHbgh0pl94Y4ongXLZhUs/s1600/%25E9%2596%25B1%25E8%25AE%2580%25E5%2599%25A81.jpg) ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLJWSx98BkA3dV2IjouGGmzZM0z__yX2yiXKJqTSLztdWTIsKDUUcBumbm7iV7WEQ0g1R_0I_PmIk3BxhdZY6-YInYpPaO4xMW0hRLKxLvJuJhdCwL-2Rra9XTOAEGES0XiCixR_ZOVNU/s1600/%25E9%2596%25B1%25E8%25AE%2580%25E5%2599%25A82.jpg) ### 今天的 這功能跟抽籤有點像,但又稍微不一樣,抽籤是在關鍵字前面加上「卡米狗」,今天的功能則是在關鍵字前面加上「今天的」。卡米狗就會說出所有今天學過這個關鍵字的回應。因為有幾隻Line聊天機器人做了懶人包或抓重點功能,我覺得很棒,所以我也提供了差不多的功能。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXNYfcBU_LqmNolrkvWuhbUUp6ptFYldJ4MIwRgWheNL7bGmZuDmKxZz4tYpZq4D4FiC4gaWZzzDaaSpkDejkQCBEHa28-TQFCOpiZqRaRxmqfEIV0NDnzNcqO9VgzBHEaLPqC62sTy3k/s1600/%25E4%25BB%258A%25E5%25A4%25A9%25E7%259A%2584.PNG) 既然做了「今天的」那有沒有「昨天的」?有的,其實有這麼多: - 今天 - 昨天 - 前天 - 本周 - 本月 - 今年 - 所有 而且那個「的」要打不打都可以。 ### [卡米狗貼圖](https://store.line.me/stickershop/product/1500785/?ref=Desktop) 卡米狗也有出[貼圖](https://store.line.me/stickershop/product/1500785/?ref=Desktop),而且[卡米狗貼圖](https://store.line.me/stickershop/product/1500785/?ref=Desktop)可以用來控制卡米狗!如果你喜歡卡米狗的話,請以購買代替領養,謝謝你的支持~ 每張[貼圖](https://store.line.me/stickershop/product/1500785/?ref=Desktop)都相當於輸入「卡米狗」加上[貼圖](https://store.line.me/stickershop/product/1500785/?ref=Desktop)上的字 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheiXCnGyEo8OKUSVedJb3anz5HwoSpiSA1JMlJyNNRsNNvodpW3UITtlERAdc5HWxVlO6gNp2L7qWS5eVMVYLCbkqHeNjvaNdoSgXTFG-p692Y3amQyloscMUBwy0S4uaPFCAoaSreAyk/s1600/%25E8%25B2%25BC%25E5%259C%2596.PNG) 以[貼圖](https://store.line.me/stickershop/product/1500785/?ref=Desktop)控制卡米狗的範例 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpN21oOQQECRmkYCaoi6oCx0J8SqFzBZpaJZbMLZqMV6CXm0TAfgxvhPoTfuqreA0P171XtV-ApdzY2qLEjzZRRUJwijJRZjHK2L_np5nNd051tsk7OexGE51bGcKWxO3aeAOTYbBG2FY/s1600/%25E8%25B2%25BC%25E5%259C%25962.PNG) ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgar5V-FBGX5w4Ezgr0ES6v0U84WJE6RX8zU7DWGNv8JnOpx66by8eRRSxpf-B4izdoozOKqJith7NCQUqczl8EhbGJ4M28WVtYAvWEr6n6I0MmzKYxhMmiWUJeYvXk1VHAe-jGnDECevw/s1600/%25E8%25B2%25BC%25E5%259C%25963.PNG) 這麼棒的[貼圖](https://store.line.me/stickershop/product/1500785/?ref=Desktop)不買嗎? # 卡米狗可以翻群或防翻群嗎? 不能。 目前市面上的翻群機器人和防翻群機器人都不是正統的聊天機器人帳號,而是使用一般人的 Line 帳號加上外掛程式去做成的,Line 在使用條款中有提到禁止這種行為,所以製作這種聊天機器人會受到 Line 的封鎖而導致無法使用。 一個正統的 Line 聊天機器人帳號是會有盾牌的帳號(在PC版好像看不到盾牌),目前一個群組只能加入一隻正統聊天機器人。 卡米狗的盾牌是灰色的。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9XjZMnOqOQ97W1mkJ7Y8f91U9f90iaCP8ZRLBqEdUjat0AjUf-Ty9QU8IH7hwFkr28CuqQCe75R9wR__tmkIEufB9_EcWQBF_WJvnKEtIZ4jBioumDgGPBWPJYyE5Fdzxf0D-TurMPTM/s1600/%25E7%2581%25B0%25E7%259B%25BE%25E7%2589%258C.jpg) 接下來會講解怎麼做一隻最簡單的卡米狗。

2017/12/20

第一天:認識聊天機器人 ( 2018 iT邦幫忙鐵人賽-只要有心,人人都可以作卡米狗 )

markdown 下一篇:[第二天:認識卡米狗](http://etrex.blogspot.tw/2017/12/2018-it_21.html) # 什麼是聊天機器人(chatbot) 聊天機器人就像[卡米狗](https://www.kamigo.tw),他可能是一個在通訊軟體上的帳號,或官方帳號,或粉絲團或者其他形式,只要你可以跟他互傳訊息,而他不是真人,那麼他就是聊天機器人。 # 聊天機器人是未來趨勢嗎? 聊天機器人是未來趨勢嗎?是的。 在智慧型手機還沒出現的時代,大部分的服務都是網站的形式存在,但是在智慧型手機普及之後,大家使用電腦的時間變短了,所以服務開始轉移到手機 App 上。近幾年發現雖然人們經常使用手機,但在手機上最常使用的 App 就是 Facebook、Line、Telegram...等等通訊軟體,已經越來越少人願意安裝新 App。安裝 App 要等下載、吃流量、吃手機空間,對大家來說都是困擾。 如果服務能以聊天機器人的形式存在,那麼大家就不需要安裝新的 App,只要加好友,就能馬上使用。若是聊天機器人在群組中,那麼一個人邀請進入群組,所有人同時可以使用,對服務商來說,這是一個會自動擴散的行銷模式。 除了通訊軟體之外,很多大型服務都有提供私訊或公開訊息的功能。舉例來說,在淘寶、露天拍賣、YAHOO拍賣等等的各大電商,你都可以跟店家私訊。因為一個服務如果不做私訊,很難滿足雙方的溝通需求。也就是說,私訊功能在大型服務上是必要的,而只要有私訊的地方,就有機會可以做聊天機器人。 做聊天機器人可以多一個接觸客戶的管道。如果你的霸氣老闆說過「大家都有做 App ,那我們也要做 App,不管做得好不好,氣勢上不能輸!」那霸氣老闆一定也會說「大家都有做聊天機器人,我們也要做,不管做得好不好,氣勢上不能輸!」。 # 聊天機器人能做什麼? 從理論上來說,聊天機器人可以做到大部分網站和 App 能做到的事情,只是透過不一樣的呈現和互動方式,以下列出一些可能性。 ## 網路客服 現代的人對於長篇文章的接受度越來越低,以 FB 小編為例,常常有人問一些明明就寫在 FAQ(常見問答)裡面的問題,但你身為小編,你能嗆他為什麼不看 FAQ 嗎?你不能。你會複製 FAQ 裡面的重點,然後採用有禮貌的語氣回答。機器人最有耐心了,所以這種事情就很適合交給聊天機器人。如果存在一個系統,他可以讓你匯入 FAQ ,當有人問到 FAQ 裡有提到的問題時,就幫你自動回應,那不是很好嗎? ## 搜尋引擎 你可以想像聊天機器人其實是一個搜尋引擎,他是一個在你輸入關鍵字之後,只會顯示一筆短文的搜尋引擎。當然你要顯示多筆結果也不是不行,只是這樣的使用情境比較不像一個聊天機器人該做的事。 ## 訂閱訊息 當你加入某個聊天機器人為好友,就代表你同意他傳訊息給你。取得有效的客戶連絡方式是在做行銷時很重要的一環,現在的人不會每秒都在收 email,但是對於 Line 傳來的訊息卻可以秒讀,這就是最有效的聯絡方式。目前常見的服務是鬧鐘、天氣或股票相關的資訊提供型聊天機器人。 ## 角色模擬 現代的人很寂寞,也時常感到無聊,對他們來說,找樂子是一件很重要的事情。我有看過一個聊天機器人,他是酒店小姐,當你加他好友之後,他就會一直傳訊息給你,要約你去酒店消費,即使你不做任何回應,他也有辦法一直講。他有一個寫好的劇本,每天就照劇本跟你聊天培養感情,如果哪天你回應了,就會有真人跟你傳訊息約你出來。 ## 陪聊天 像[卡米狗](https://www.kamigo.tw)這種聊天機器人,除了平時在群組講講幹話,同時也會講笑話、唱歌、占卜算命等等的聊天機器人也是受歡迎的一種類型。 ## 純文字遊戲 在古代有一種遊戲叫做 [MUD](https://zh.wikipedia.org/wiki/MUD),他是在圖形化人機介面還沒成熟時的遊戲。遊戲會用文字描述玩家現在的處境,然後給玩家一些選項,而玩家可以用打字的方式選擇,比方說「在你面前出現了一個很大的湖,請問要把斧頭丟進湖裡嗎?(yes/no)」此時透過輸入「yes」或「no」來影響遊戲走向。 ## 網頁遊戲 facebook 的聊天機器人支援顯示內嵌網頁在對話框,也就是說你可以在 facebook messenger 上面作一個開心農場。跟原版開心農場不一樣的地方是,原版開心農場在有人偷你菜的時候會給你一個 facebook 通知,但是在 facebook messenger 上的開心農場可以直接私訊你「熊孩子又來偷你菜了,要偷回去嗎?(yes/no)」這時候你可以透過私訊的方式去操作這個遊戲,而不用真正開啟這個遊戲畫面,對於上班族來說不用開啟遊戲就能玩遊戲是一件多麼棒的事情。 ## 線上桌遊 聊天機器人可以透過私訊傳遞機密情報,而在群組傳遞公開情報。舉例來說,你可以做一個聊天機器人,讓他在群組建立遊戲和讓其他玩家加入遊戲,而在私訊進行遊戲。一個邏輯正確的聊天機器人應該要透過私訊告訴你目前的手牌是什麼,而不是在群組。 ## 放置 PLAY 型線上遊戲 傳說中的 RO 外掛可以做到脫機外掛,也就是不執行主程式,只開一個黑黑的畫面(終端機),然後透過純文字的方式告訴你目前發生了什麼事。比方說「你攻擊了波利,造成了5點傷害。」,把這樣的訊息從終端機改成用聊天機器人發送訊息的形式也是可能的。像那個功德無量放生系統,我就覺得很適合做成聊天機器人。 ## 訂餐、訂位 雖然還沒有看到任何一家賣雞排的或賣手搖飲料的店做,但我覺得應該很快就會有結合 POS 機的聊天機器人,只要在 Line 上面傳訊息說「兩片雞排要辣」就自動把訂單打出來給店家的聊天機器人。 ## 賣東西 Line 上的聊天機器人可以傳送 Template 和 Carousel 這些類型的訊息,他看起來是像這樣的: ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOqd8y8rH12cuM5_Yj6OtAtsI-iV0Kk635oJdMS7qw573mTAlXaxJ3JYglVFuCD37S5Y-vV8it4X0R_HMB2myghIqoLQq9BLgaNkT4vB2TSnxqsBslKUq0ncQoyWalRbM04pVExhRAfEE/s1600/IMG_6820.PNG) 這很適合作為商品選單,或者說他其實是設計出來專門讓你賣東西用的功能。關於在 Line 上要怎麼付款這件事,有一個保證可行的方案是你跟聊天機器人對話的過程中建立訂單,然後再開啟一個結帳網頁。雖然現在 Line 有些事情還不能做,但既然他是趨勢,就表示通訊平台未來會設計出更多樣式的訊息和功能提供給大家使用,最值得期待的我會認為是 Line Pay 的整合。哦對了,聽說 Facebook 上的聊天機器人是有做完整金流的,所以如果做在 Facebook 上就不用另外開網頁囉。 ## 智能助理 像是 Siri 這類型的聊天機器人,他可以同時提供許多種上述服務,那他就會被稱為智能助理。 # 聽說做聊天機器人需要會人工智慧、機器學習等這些很潮的技術才做得起來? 沒有這回事,[卡米狗](https://www.kamigo.tw)就是一個完全沒有用到這些技術的聊天機器人。 目前的聊天機器人從訊息的解讀方式來看的話,可以分為三大類:使用規則、使用按鈕、和使用語意分析。 [卡米狗](https://www.kamigo.tw)是使用規則來解讀訊息的聊天機器人,舉例來說「[卡米狗](https://www.kamigo.tw)學;你好嗎;我很好」這並不是一個正常人類會自然講出來的話,而是一種指令。對[卡米狗](https://www.kamigo.tw)來說,只要你打錯字,不符合規則,他就不會理你了。因為打錯字就無法使用,會讓大家造成很大的挫折感,所以[卡米狗](https://www.kamigo.tw)也有使用按鈕。 當你說「[卡米狗](https://www.kamigo.tw)」時,他會用純文字描述目前狀態,然後給出一個包含兩個按鈕的選單,接下來所有的操作你只需要點擊按鈕,因為沒有輸入文字的階段了,所以就不會有打錯字的問題。而一個好的語意分析能夠讓你在打錯字或者用不同的說法,都能猜到你要的是什麼。 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifwTmp8F1_gGzbBTaH2fpG5gqRRkG0a545Kl4RlfMJIPNc9cthPyKyud4PuEPCAXU2X0hQNUAKJDJACR0daJK8x0XX0sg8a21anKYr0uvHUL1IOiXxzUZECE4mbNTo_ALC7mfuZ-AnjGc/s1600/IMG_6821.PNG) ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisfmNUciEJ0uBttF5munWtAC9emVArSVoNA4AoqGSoFeJhqK2KeSxeN32xaXCn9kRnrYm_s9zgZjuFwC7xIPvttfWQo4OZcd9nUSClfvlsXNKOSwsxu6LknoLxu7Ngn1MOzCOahRCW5mo/s1600/IMG_6822.PNG) 目前語意分析做得最好的方法是使用深度學習技術加上大量良好的資料輸入。當然如果你有深度學習技術和相關的資料,你可以做得更好。但在成本考量下,做一個簡單的聊天機器人其實也可以做得不錯。 # 有可能在 PTT 上面做一個聊天機器人嗎? 是的,廣義的聊天機器人是可以在透過任何文字交流的平台上發布或回應訊息。差別只在於 PTT 並沒有做 API (應用程式介面) 方便我們去串接,所以我們只能透過類似外掛程式的方式去控制網頁發布或回應訊息。

2017/9/1

line bot 的新功能範例code

Line 於今天發表了 Messaging API 的新功能:[[Messaging API] New template message features released](https://developers.line.me/news?ny=2017&nm=09) 其中包含了一個新的 template:image_carousel,以及一個新的 postback:datetimepicker image_carousel 可以讓你一次傳最多五張圖以橫向捲動方式瀏覽 datetimepicker 可以在按下按鈕時彈出日期時間選擇器 iOS line 7.9 版本以上才能使用 datetimepicker android line 7.12 版本以上才能使用 datetimepicker 結合這兩個新功能的範例 message json 如下: ``` { "type": "template", "altText": "this is a image carousel template", "template": { "type": "image_carousel", "columns": [ { "imageUrl": "https://www.petfinder.com/wp-content/uploads/2012/11/91615172-find-a-lump-on-cats-skin-632x475.jpg", "action": { "type": "datetimepicker", "label": "選日期", "data": "q1", "mode": "date" } }, { "imageUrl": "https://www.cats.org.uk/uploads/images/featurebox_sidebar_kids/grief-and-loss.jpg", "action": { "type": "datetimepicker", "label": "選時間", "data": "q2", "mode": "time" } }, { "imageUrl": "https://static.pexels.com/photos/126407/pexels-photo-126407.jpeg", "action": { "type": "datetimepicker", "label": "選日期時間", "data": "q3", "mode": "datetime" } } ] } } ``` 他的點擊範圍是整張圖 點第一張圖: 點第二張圖: 點第三張圖: datetime picker 的三種傳回結果:

2017/7/19

chatbot 會以什麼姿態取代 web?

在 chatbot (以下簡稱 bot ) 上,我們沒有足夠大的空間去顯示一整個網頁的資訊,所以我們一次只會顯示網頁的一小部份,就跟做 app 時一樣,但空間更小。而當 web 上的每一個元件都有 bot 的替代方案時,則表示 bot 將可以完全取代 web。

以 line bot 為例:

路由

web:網址解析
bot:語意分析

使用者輸入的每一句話都是一個 request,在此階段是做 route 的工作,這也是語意分析的主要工作。

主選單

web:nav
bot:template buttons 或 imagemap

由於bot無法一次顯示整個網頁的資訊,所以會先從 nav 開始。可以使用多個 template buttons 做出巢狀選單,也可以利用 imagemap 做出比較漂亮的版面。

列表

web:list
bot:text 或 template carousel

有圖或超連結的情況下會使用 template carousel

表單

web:form
bot:conversational form

透過問答的方式填表

總結

像這樣一個個找到 web 元件在 bot 上的實作方案,最終就能取代 web。

大量使用超連結的作法可以迴避掉語意分析,因為除了表單之外不需要打字,進入難度將大大降低,使用者體驗也會比較好。我相信大多數的bot應該都會採用這種較低成本、符合成本效益的做法。

不過,與其說 bot 可以取代 web,不如說開發者將從同時開發 web、app 變成同時開發 web、app、bot,所以將來很可能會有能同時發布到 web、app、bot 上的開發框架。

2017/3/23

建立一個line bot的所需知識

markdown 架構 * 程式語言:ruby * web server framework:rails * 資料庫:postgresql * 協定:https post * 資料傳輸格式:json 開發環境 * 硬體:macbook * 軟體 * rvm * rails * bundle/gem * sublime text 發布環境 * 硬體(heroku) * 軟體 * git * heroku cli

2016/12/26

我認為一個良好的 chat bot 架構設計

名詞介紹:
intent:意圖,bot 能做的事情,可以想像成一個 intent 就是一個 function。
keyword:從一個句子當中擷取出的關鍵字,可以想像成是 function 的參數,舉例來說可能是日期、時間或地點、名詞等。

我們可以把 user 輸入的每一個句子看做是高維度空間上的一個點,然後我們對這個空間做分群,假設我們的 bot 有 3 個 intent,那麼整個空間就會被分為 4 群,多 1 個群是因為不做回應。

而句子座標落在哪一群,就代表著 bot 要使用哪一個 intent 來做回應,也就是說,我們可以把機器人回應變成一個對句子做分群的問題,然後套用分群演算法。透過標示每一個句子應該落在哪一個 intent 裡,我們可以強化接下來 bot 的精確度。

怎麼把一個句子變成高維度空間上的一個點,會是一個門檻。

如果要做到 bot 可以根據前後文來做回答,那麼 keyword 的記憶會變成是一個非常重要的關鍵,比方說:

user : 「你知道日本嗎?」
bot : 「知道阿」

user : 「好玩嗎?」
bot : 「蛤你說什麼東西好玩?」

像這樣的 bot 沒有記憶能力,他只能回應上一句話,他應該要把所有提到過的 keyword 都先記住(使用類似 session 的方式去記)。當 user 觸發一個需要參數的 intent 時,應該優先考慮前面提過的 keyword,當 bot 覺得前面提到過的 keyword 都不適合做為此次呼叫的 intent 時,再跟 user 要求一個新的 keyword。

另一方面,Function Currying 是比較容易的。
https://zh.wikipedia.org/wiki/%E6%9F%AF%E9%87%8C%E5%8C%96

user : 「我下個禮拜一想請假」
bot : 「想要請什麼假?」

user : 「想請病假,因為我下個禮拜會肚子痛」
bot : 「可以~很可以」

user 呼叫請假(日期, 假別),可以透過 Function Currying 拆解成 請假(日期)(假別)

也就是說,前面所說的分群,還需要考慮 intent 如果是有參數的,那麼 bot 現在是要延續前一個 intent 的 Function Currying 的呼叫,還是 bot 會認為 user 想要呼叫另一個新的 intent,這是分群演算法也要能做到的。

user 先叫 intent 後傳參數,看起來容易做。但是先傳參數,再叫 intent 就比較困難。判斷到底該使用哪一個 keyword 作為參數會是一個難題。

目前為止沒有看過任何一隻 bot 能做到這點,做得到就神惹。

在 intent 數量很大而難以設計出良好 UX 的情境下,那才會是 chat bot 的擅場。所以我認為一個 bot 在 intent 數量很少的情況下,應該做成 App 或 Web,而不是 bot。也就是說,做一個 bot framework 必須考量如何讓 bot 擁有者能夠輕易地新增一個 intent 。一個太少 intent 的 bot 行為看起來跟智障沒兩樣。正因為卡米狗能夠讓 user 很輕易地新增一個 intent ,所以卡米狗能夠看起來很聰明。卡米狗的下一步,是讓每一個 intent 能夠自動對應到相似的句子,而不是完全match,這樣就能看起來更聰明些。

現階段這種看起來像智障的 bot ,有可能會被全部都串到個人助理類型的 bot 作為 proxy,比方說 siri 會根據使用者的句子,決定現在該把訊息傳給哪一個 bot 來做回應,然後這個個人助理就可以看起來很聰明。

比方說我是 microsoft ,我開發了一個 microsoft bot framework, 我知道所有 bot 的 intent ,所以我能夠知道 user 輸入的句子應該用哪一個 bot 來做 proxy,所以我能開發一個個人助理,他可能有上百萬個 intent ,而這些 intent 是開發者輸入的.... 科科。

結論:想開發聰明的 chat bot ,就要先開發 bot framework。

LINE Taiwan TechPulse大會心得

https://linecorp.com/zh-hant/pr/news/zh-hant/2016/1604

為了展現 Line bot 的魅力,Line 決定採用 Line bot 的介面去做活動報名以及議程的顯示,中場遊戲進行等等,但UX還有待加強,比方說chat bot不適合用文字來顯示議程,可以考慮用 ImageMap 來顯示。

雖然說這是開發者大會,但是會場對於開發者來說非常不友善,因為會場沒有插座,也沒有一個能連的wifi,所以身為開發者的我感到呼吸困難。

不知道是不是有經費上的問題,中午沒有附便當,但是卻附了 XBOX、PS4 、茶點和很有誠意的伴手禮。

整個活動對於時間上的掌控是有問題的,計畫趕不上變化,說好的中午 12:00 到 13:30 吃飯時間,變成了12:40~13:40。在附近沒有餐廳的情況下,約300人同時離開會場去覓食,13:40 會場人數回來不到一半。

看起來 Line 應該是第一次辦活動,還有很大的進步空間。


之後的 Line 群組會有管理者權限功能,以後不用怕翻群了。

之後的 Line 群組可以有很多聊天室。

之後的 Line 群組可以開發 App 稱為 Group App。

Group App 跟 Line Messaging API 是兩回事。


根據統計,Mobile App 的成長量小於 Mobile Web,所以開發網站還是比較重要der~

2016/11/23

chatbot meetup #1 筆記

chatbot meetup #1
http://chatbot.kktix.cc/events/meetup-01


Microsoft Bot Framework x Cognitive Service 快速打造智能聊天機器人
Eric:
平台的演進:PC=》Web=》Smartphone=》Messaging
Messaging 是最新一代的平台
Bot 是一種在 Messaging 平台上開發的 App

人類花大量時間在聊天平台上聊天
Apple google amazon 他們開發的是 interface

Microsoft Bot Framework 提供SDK C# nodeJs
Bot Builder 做好bot
Bot Connector 發佈在聊天平台上
BotDirectory 曝光bot、bot列表

Microsoft Cognitive Services 提供電腦視覺 聽覺 語意分析等等的服務
(web api 形式)
Vision
image => 裡面有什麼、有人嗎、幾歲?男的還是女的、ocr
Speech
Speech <=> text
Language
LUIS.ai
Intent (function)
Entity (param)
輸入句子
輸出 Intent 的機率和標出 Entity
Function Currying

Knowledge
Search


Introduction to NLP for Chatbots
李昀樵 - 台大數位語音實驗室:
compose.ai
做了三個bot demo 平台能力
全台實價登錄
追劇吧
ubike小幫手

不需要寫code就可以做bot的平台
用UI拉決策樹

BOT 開發的重點
要記住 CONTEXT
各種參數的輸入是可以解讀的,沒有輸入就給預設值、或者去問USER

Part-of-speech(POS):
把一句話的每個字的詞性抓出來

Infomation Extration(IE)
取出一個句子裡的參數

Dialog
輸出對話回應

中文斷詞
Jieba 結巴分詞(python)
OOV(系統沒看過的詞)
中研院斷詞系統 http://ckipsvr.iis.sinica.edu.tw/

Named entity recognition(NER)
辨識專有名詞
wikipedia 是最大名詞集合
Google NLP also return wikipedia_url

Stanford NLP

Intent Parsing
Adapt https://github.com/MycroftAi/adapt)
Stanford NLP

API
api.ai
wit.ai
Microsoft LUIS

Q&A 系統
對輸入句子做分群 然後回答對應的輸出
word embedding features
Facebook facetext


Messenger Platform's New Opportunities and Insights
Po Cheng Chu 蝴蝶 Botimize:
Customer Service
Intention Extraction
luis.ai
api.ai
wit.ai
Human-Bot Hybrid
80% by bot
20% by human

Bots
Travelflan
Taobao

E-Commerce
Payment
Stripe
Paypal
Token

Account Linking

Checkout and pay in webview

Bots
Domino's Pizza

Subscription
Stadard Messaging
24小時打一次
Subscription Messaging
不能發廣告訊息

Bots
CNN
TechCrunch

Avatar
Personality

NPC-like

Bots
Hearthstone
D. Trump Bot

Match-Making
Platform
匿名聊天
民調

Human Computation
工人智慧

Bots
Her/Him
Sensay
Swelly

Game
Webview

Interaction Focused

Bots
Space Adventure
Murder Mystery Game

Utility / Micro-app
Mention
@bot 去叫 bot 做事

Account linking

Bots
Polly.ai (做民調)
Gif

Facebook Messenger SDK 1.3
Link with Parameter
在 webview 上的操作做到一半
跳到 chatbot 上繼續做

List Template
Checkbox Plugin


Zeroth.AI

怎麼做AI?
Human Computation(工人智慧)
工人智慧造人工智慧

Travelflan
旅遊顧問

Designjar
收集資料

http://www.botimize.io/
bot界的GA



如何透過 Golang 與 Heroku 來一件部署 臉書機器人與 Line
Evan Lin:
GO 超棒
ruby 很快樂 但超慢
C 很快

python: 戰tab/space
GO 存檔就自動排版
GO 寫 test 很方便

PetNeedMe
CodeTengu


Facebook 不想讓你知道的事
Howard Chang
Her/Him & Her/Her 作者

Messenger Platform 上可以用的 PS_ID
FB login 登入的ID是 FB_ID

1. 透過 profile_pic 的檔名,兩邊的API的頭貼其實是一樣的路徑
2. 在 FB login 時加入 query string psid=#{psid}
3. 用 message_id 直接作messenger外掛可以拿到 message_id
可以傳貼圖 也可以傳任何訊息



Aloha.AI
customer service
QA bot
預測接下來user想問的三個問題


卡米狗 line bot
 郭佳甯
  卡米狗超棒der 還沒加入卡米教的趕快加入