LINE Chatbot 開發攻略(二)

運用Messaging API設計Chatbot概念介紹

======================

Line Messaging API介紹

  1. Overview
  2. Messaging API Reference

======================


Line Messaging API介紹

1. Overview

https://developers.line.me/en/docs/messaging-api/overview/

(1) SDKs

官方與開放源代碼SDK資源

https://developers.line.me/en/docs/messaging-api/line-bot-sdk/

(2) API文件

https://developers.line.me/en/docs/messaging-api/reference/

(3) 帳戶方案與功能Q&A

這個部分對於設計Chatbot的應用與計畫商業模式等方面相當重要。

當您準備好程式後台時,將Server Endpoint URL填入到Line Channel的Webhook URL :

或者

一個Provider下可能有一個以上的Messaging API Channel,選擇欲連結至開發者程式後台的Channel -> 進入到Channel settings。

往下滑動至Messaging settings:

  • Use webhooks:選擇Enabled
  • Webhook URL:輸入您開發者程式後台的Endpoint URL,請注意務必為HTTPS。Line Chatbot的訊息與事件等等,將會以POST方式,將資料以JSON格式送達。

— 設定完成後,請點選Verify,確定出現Success代表與後台連接無誤。

舉例,在Chatbot中輸入文字訊息:

LINE server將會POST JSON data到程式開發者程式後台:

{“events”:[{“type”:”message”,”replyToken”:”d9ec2a9d3c734b89a11b507d4357b548",”source”:{“userId”:”Ucf450a4dd60ff31295222243c50dd923",”type”:”user”},”timestamp”:1508469030117,”message”:{“type”:”text”,”id”:”6867267311080",”text”:”您好!”}}]}


2. Messaging API Reference

https://developers.line.me/en/docs/messaging-api/reference/

與HTTPS Request共同的基本概念部分我們跳過,直接來到:

Webhook event objects

共分成三個部份來介紹:Common properties, Message event, 以及 Other events — Follow/Unfollow/Join/Leave/Postback/Beacon event.

Common properties

定義一個事件(Event)來源為何?

  • User : 單一使用者對於Chatbot所產生的事件。
  • Group : 群組 — 群組必須先建立,然後邀請使用者,等待其同意後加入。Chatbot在群組中接收到的事件。
  • Room:當在Line當中加入第三人(Chatbot也算一人)到兩人對話當中,即構成聊天室。Chatbot在聊天室中所接收到的事件。

當中有三種Id:

  • userId:使用者之於此Chatbot的識別ID。這個ID跟使用者本身的LineId無直接關係。
  • groupId/roomId:群組與聊天室之於Chatbot的識別Id。

Message event

Chatbot接收到的訊息種類有Text(文字)、Image(圖片)、Video(影片)、Audio(聲音)、File(檔案)、Location(位置)與Sticker(貼圖)。

  • Text:最常被使用到的。
  • Image、Video、Audio和File四種訊息,可以透過 Get content 的HTTP request取得檔案資料。

GET https://api.line.me/v2/bot/message/{messageId}/content

  • Location

使用者輸入的位置資訊如下圖所示。

  • Sticker

Line基本的Sticker清單。

Other events

以下為各種事件其觸發時機:

  • Follow event:當Chatbot被使用者加入時,或是Chatbot被封鎖後解除封鎖時會被觸發。
  • Unfollow event:當Chatbot被一個使用者封鎖時。
  • Join event:

— 當Chatbot被加入一個群組時。

— 當Chatbot被加入一個聊天室後有任何一個使用者發出任一訊息時。

  • Leave event:

僅有Chatbot在群組中被刪除才會觸發。

在群組或是聊天室中,若其他成員即便都離開也不會觸發事件。

因此若要監控Chatbot在聊天室或群組是否仍被使用,比較好的方式是要記錄最後一個來自聊天室或群組的訊息,或定期使用API Get group/room member user IDs(需要LINE@ Approved accounts or official accounts才可使用)

  • Postback event:

在本文後面的Message objects中會介紹到的Imagemap message、Template message中的Postback action觸發產生此事件。

  • Beacon event:

當進入到Line beacon範圍內時觸發。在開發攻略(一)文中有提到申請產生Beacon Hardware ID的連結,Line Beacon的軟硬體開發應用需要用一篇文來詳細介紹。


OAuth

產生一個channel access Token(用來呼叫Line Messaging API時認證用)

Chatbot可以產生兩種Token:

  • 具時效性的Token

這邊提到這一個HTTP Endpoint:

POST https://api.line.me/v2/oauth/accessToken

可以產生一個30天有效的Channel access token,總共可以產生30組,產生第31組時會把最早產生的第一組給取代掉。

API中有兩個參數,client_id與client_secret,請到:

Console -> 選擇Providers->選擇Chatbot的Messaging API Channel->來到Channel settings頁面

就可以找到client_id(Channel ID)與client_secret(Channel secret)

  • 永久不失效的Token

承上,在Channel settings同一頁面,可以產生永久不失效的Access token。

Message

對於Send Message API,主要可以分為兩類,

  • REPLY_MESSAGE:API用以回覆使用者輸入 — Send reply message使用者主動產生Chatbot的Event回覆一個訊息物件。
  • PUSH_MESSAGE:API用以主動推送訊息給使用者的 — Send push message或Send multicast messages

關於不同方案所支援的API功能請詳閱:帳戶方案與功能Q&A

另外有Get Content API,可以透過Message ID來取得使用者傳送的Image、Video、Audio和File共四種訊息種類。

Profile

  • displayName:即呼叫API時所取得當時Line上面的名稱。
  • userId:User之於此Chatbot的識別ID。
  • pictureUrl:大頭照檔案的URL路徑。
  • statusMessage:狀態訊息,使用者自行設定的風格文字、個人哲學語錄…

Group/Room

  • 取得Group/Room的member profile。
  • Leave Group or Room。

Rich menu

程式透過API來管理Rich menu, 一個Chatbot可以設定最多十組Rich menu,可以根據User喜好、訂閱功能或是下一頁Menu(即時切換)等等不同創意巧思,將某一個user對應到當下的Rich menu,有效分群管理。

利用Line @ Manager直接手動上傳與設定Rich menu,這邊的設定就是讓所有Chatbot的使用者統一看到這一組Rich menu。


Message objects與 Action objects

進入以下Message types的連結:

訊息項目中,有些可以透過Line @ Manager管理後台直接發送。

有些是需要透過開發者程式後台回覆使用者的訊息種類。

  • Text:文字種類的訊息,當中可以加上Emoji,請參考 Line Emoji List

繼續之前,我們要先介紹下Action objects:

訊息物件中的Imagemap, template messages,可以供使用者點擊互動的介面,會產生一個Action,這些Actions可以分為以下四種:

(1) Postback:點擊後,Line server會送一個HTTPS POST至Webhook URL開發者後台,並將剛才點擊項目的參數一同帶入,e.g “action=buy&itemid=111”,後台就知道使用者剛剛點擊了哪一個項目。

(2) Message:點擊後,Line App會自動幫使用者送出一個文字訊息。

(3) URL:訪問一個網站連結。

(4) Datetime picker:如下圖,當選擇完畢按下Send(發送),Line server會送一個HTTPS POST到開發者後台,告知剛剛使用者選擇的時間細節。

  • Imagemap:將圖片組合成一個大圖,點擊不同區域,觸發區域對應的Action object,這邊值得注意的是,在組合圖完成後,在保持長寬比例下依序調整圖片寬度尺寸為240px, 300px, 460px, 700px, 1040px(為滿足不同尺寸手持裝置顯示需求),圖片檔案格式必須為JPEG或PNG,上傳到後台時,請去除掉檔案的副檔名。

— Line內使用的圖片,為讓使用者有較佳體驗,尺寸保持在1MB以內。

  • Template message

(1) Buttons:如下圖,Reserve與Call這兩個項目都是屬於Actions。Buttons template最多可以有4個Action項目,圖片可有可無。

— 除了Line的Emoji外,網路上有很多Emoji -https://apps.timwhitlock.info/emoji/tables/unicode

也可以應用加入在Text中,讓介面顯示很生動。如何使用具體的程式部分將會在後續開發攻略中介紹。

(2) Confirm:沒有圖片,專門使用作為確認用。

(3) Carousel:Buttons的頁面橫向滾動版,最多一個Carousel message可以有10個Columns(行),與Buttons不同點是,每個行的物件, Buttons可以有四個; Carousel每行最多只能有3個Action項目

(4) Image carousel

跟Carousel template異曲同工,只不過是點擊圖片會產生Action,同樣的,單一Message最多可以有10 columns(10張圖)橫向滾動。

======================

Copyright © 2018 Josh Chang, Obaiot All rights reserved

To be continued~

約翰福音 14:6

耶穌說:「我就是道路、真理、生命。要不是藉著我,沒有人能到父那裡去。

======================

HonDTour

用心享受,遊走在世界的時光。

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store