LINE Messaging API – LINE 對話機器人

參考資源

沒有程式的生活圈是什麼樣的?

簡單說就只是「沒有程式自動化」,也就是沒有機器人自動回答,可以一對一客服也可以發訊息給全部好友

換句話說,如果想要讓客戶自行輸入關鍵字即可得到資訊就需要使用 API,需要切換到何種方案就需要看進一步的需求

名詞釋疑

生活圈 LINE@ 從 https://at.line.me/tw/ 建立的叫做生活圈,後台是 https://admin-official.line.me

生活圈 LINE@ 建立的稱作「帳號」,LINE Developers 建立的叫做 channel

使用生活圈必須另外在手機上下載使用另一個 LINE@ 的 APP 來管理 LINE 生活圈,生活圈的管理是無法從網頁後台或是 LINE 去操作的

Hoyo 提供線上工具

費用

從 https://manager.line.biz 進入,選擇對應 Accounts → 右上角 Settings → 最下面 Account details → Change plan (像迷宮一樣難找)

流程、步驟

  1. 從 LINE Developers 加入開發者
  2. 新增時選擇「Messaging API」
  3. Plan → Developer Trial
  4. 新增後再次選擇設定
    1. Channel access token : 產生 API 發送使用 access token
    2. Use webhooks : Enabled
    3. Webhook URL : 接受 LINE 訊息的網址
  5. 分享 QRCode 加入 LINE 機器人

Webhook URL – 接收訊息的 Reply.php

 

 

接收 LINE 的訊息

收到的訊息是 JSON 格式,大概長這樣

比較容易看的格式

 

Reply 一問一答的 LINE 機器人

 

群發

發送 – 圖檔

發送 – 視頻

官方文件說有影片以及預覽圖大小限制,實際上因為檔案放在自己主機上,所以並無限制

 

發送 – 音頻

  • duration 單位為千分之一毫秒,只和顯示播放倒數有關,音頻有多長還是播多長

取得使用者資訊

PHP

回傳 JSON

使用 LINE@ 後台

官方後台的訊息發送並不是立即, 2019-3-24 實測時有 3 分鐘的延遲,加入好友且已可接收訊息也沒有更新好友數

各種接收到的 Json

加入

退出 (隱藏後刪除)

文字訊息

表情貼

貼圖

圖檔

影片

取得圖、影音檔案內容

必須使用和 message 相同的 bot 才可以取得內容

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

顯示貼圖、表情貼

9,841 total views, no views today

Video.js – 基本播放以及字幕

水平居中、高度固定的播放器

以下為完成意義圖

字幕

要讓影片加上字幕只須加上 <track> 即可,例如這樣

不過還需要注意字幕格式

原始的字幕

這個字幕是不能直接使用,必須做以下修改

  • 開頭加上 WEBVTT
  • 將時間小數點的逗號改為小數點

自訂字幕格式

設定靠左對齊、黃色字

CSS

2,498 total views, no views today

Facebook OAuth v3.1 臉書登入 – 使用 PHP SDK

流程

  1. 下載 PHP SDK php-graph-sdk (v5)
  2. 將下載的 php-graph-sdk-5.x.zip 檔內的 src\Facebook 解壓縮到網站內
  3. 準備兩個網站路徑:登入、OAuth
  4. https://developers.facebook.com/apps 選擇臉書登入 app
    1. 設定 → 進階:升級 API 版本到 v3.1

    2. 產品 → 設定:將預計的 OAuth 路徑填入 有效的 OAuth 重新導向 URI
  5. 準備產生臉書登入連結及處理 OAuth 資訊到取得臉書個人資料 id, name, email

PHP  – 產生 OAuth 登入連結

 

如此即會產生如以下這樣的連結

 

OAuth 登入處理 (https://member.hoyo.idv.tw/Facebook.php&b=OAuth)

這裡只列出 Facebook OAuth class 的程式碼,前面還有一個 index.php 處理網站入口,例如後面說的 session 錯誤就是寫在 index.php 內

$UserInfo 如此即可得到該登入使用者在 Facebook 的基本資料 id, name, email

無法載入網址: 這個網址的網域未包含在應用程式的網域中。若要載入這個網址,請在應用程式設定的「應用程式網域」欄位中新增應用程式的所有的網域及子網域。

請使用 Facebook 提供 SDK ,注意流程即可避免此問題

Facebook SDK returned an error: Cross-site request forgery validation failed. Required param “state” missing from persistent data.

PHP 必須開啟 session_start();

Graph returned an error: This authorization code has been used.

為什麼 Facebook 使用 PHP 不是使用 Javascript ?

因為 Facebook 的 js 寫的很爛只能跑在「較新版」的 Chrome 例如 v62 ,而 Google 可以跑在 Chrome v44 所以使用 PHP 沒有 js 相容性問題

3,551 total views, 1 views today

Let’s Encrypt – *.hoyo.idv.tw 通配網域證書

Wildcard 網域 DNS 自動化

  • https://certbot.eff.org/docs/using.html#dns-plugins
  • https://github.com/siilike/certbot-dns-standalone

參考

取得 certbot-auto 及執行

單一網站

通配網址

執行,記得產生一個通配網域一個只有網域名稱證書,如此單獨使用網域名稱時才不會 SSL_ERROR_BAD_CERT_DOMAIN 證書問題

編輯 DNS

重新啟動 DNS

驗證

Enter 繼續執行,沒問題出現以下畫面就代表證書建立完成

通配網域使用 DNS 單一網域使用網站認證

使用網頁即可

不過認證之前必須注意要把網址 Rewrite 關閉,例如 http 轉 https,否則會失敗

Online dig

自動更新證書

-目前手動更新中-

Bind 9 動態 DNS

 

其他注意事項

  • 失敗的指令也會算在 Rate Limits
  • SSL_ERROR_BAD_CERT_DOMAIN : hoyo.idv.tw 等於 *.hoyo.idv.tw ,必須使用 hoyo.idv.tw 證書或是將 hoyo.idv.tw 轉到 www.hoyo.idv.tw 才能套用通配網域證書

496 total views, 1 views today

將 Windows 功能轉換成 REST API – 以 Microsoft Office Document Imaging 為例

小白先看這裡

Microsoft Office Document Imaging 使用在 Windows Form 的情況

至少要先在 Windows Form 應用程式專案下可以順利運作有基礎的概念,才有辦法轉換到主控台應用程式

命令提示 Console Application

最後 Program.cs 長這樣

使用 PHP 包裝成 REST API

如此即可將 GUI 轉換成 CLI 方便 PHP 使用

你問 REST API 在哪? 都轉換到 PHP 可以直接取得辨識後結果了,剩下的就是自己的創意了啊

403 total views, no views today

取得臺灣即時氣象資訊

目標:取得台灣地區的即時氣象資訊

交通部中央氣象局-開放資料平臺

  1. 加入會員
  2. 登入會員後網站選單會多一個開放資料目錄,裡面有資料清單的詳細說明
  3. 切換到「資料使用說明」內有「取得授權碼」,點選即可得到下載授權碼
  4. 找到符合需求的資料清單代碼後,套用到下載網址的 dataid 即可

 

Сurrent weather and forecast – OpenWeatherMap

  1. 加入會員
  2. OpenWeatherMap 會寄信給你,內有你的 API 連結 appid 和範例
  3. 然後就可以根據這個範例和 appid 使用網站上的 API 說明

 

 

1,818 total views, no views today

AWS EC2 安裝 SSL

要網頁上操作完網站認證後,要取得證書必須「下指令」!

AWS 命令列界面

在 CentOS 6 上面安裝只能用

就不要浪費時間去用 yum 了

取得證書

必須先初始設定

 

与 AWS Certificate Manager 集成的服务

根本就不是直接拿來套用在 HTTPD Server 上提供 SSL 加密的!

(世上沒有白吃的午餐,媽的智障)

 

395 total views, no views today

串接 PayPal

流程

  1. 申請帳號
  2. PayPal Developer 開通開發帳號
  3. 沙盒測試網址加上 sandbox 即可
    https://www.sandbox.paypal.com
    https://ipnpb.sandbox.paypal.com
  4. 針對開發人員的 PayPal 和 IPN(交易狀態更新)介紹

開啟 IPN (交易狀態更新、即時付款通知)

個人檔案 → 我的銷售工具 → 交易狀態更新

Image 236

自訂付款

 

  • business :
  • amount :
  • return :
  • cancel_return :

一個實際案例

  • notify_url: 設定 IPN 返回網址
  • return: 成功付款返回網址
  • cancel_return: 取消交易返回網址

IPN

將接收的 IPN $_POST 轉成陣列

驗證 IPN 是否屬實

  • https://ipnpb.paypal.com/cgi-bin/webscr?cmd=_notify-validate&

VERIFIED 有效,INVALID 無效

REST API

輔助資源

2,837 total views, 1 views today

臉書 Facebook 取得讚、分享數

這是明郅資訊的粉絲專頁 – 明郅奇幻星球 ( https://www.facebook.com/mjapptech )

image-352

接下來要講解只要有臉書帳號就可以做的事情

進入 Facebook 圖形 API 測試工具 或 https://developers.facebook.com/tools/explorer/

後以臉書帳號登入

目前 Facebook 的 API 從 v2.2 ~ v2.8 ,每個版本都有差異,不過最大的差異是以 v2.3 為切割點,後面會講到,自己切換測試也可得知

v2.8/mjapptech

所以換成這樣也可以取得相同結果

v2.8/1508002559485075

 

取得粉絲團文章

v2.8/mjapptech?fields=feed

太多了就不貼了,順便講限制筆數

v2.8/1508002559485075?fields=feed.limit(3)

 

Post 文查詢

將粉絲專業 id 加底線加 Post 文 id 即可取得完整的 post_id

例如這篇 https://www.facebook.com/mjapptech/posts/1820251104926884 ,從網址即可得知 Post 文 id 為 1820251104926884 ,粉絲團 id 為 1508002559485075

所以 post_id = 1508002559485075_1820251104926884

v2.8/1508002559485075_1820251104926884

取得按讚 fields=likes

v2.8/1508002559485075_1820251104926884/?fields=likes

取得分享數 fields=shares

v2.8/1508002559485075_1820251104926884/?fields=shares

這個數字不代表什麼,因為隱私權設定問題所以最後「看得到」都會更少,所以一般都是使用接下來介紹的 sharedposts

取得分享列表 sharedposts

要取得「相對完整」的資料,必須滿足

  1. v2.3 以前的 API
  2. 權限:read_stream
  3. 現在看到已經太晚了,APP 現在強迫在最新版 (v2.8) 所以無法使用 v2.3 的 Token 以及 read_stream 權限

v2.3/1508002559485075_1820251104926884/sharedposts?limit=2

 

使用網頁 HTTP 直接取得

因為是非同步取得資料,所以除了解析字串還要多次取得資料才會完整

對於公開的粉絲專頁,可以簡化為

 

看 Post 文轉貼

https://www.facebook.com/shares/view?id=1820251104926884

v2.3/1820251104926884?fields=likes.limit(1000),sharedposts.limit(1000)

 

取得使用者資訊

https://www.facebook.com/app_scoped_user_id/使用者 id

v2.3/me

 

內嵌 Post 文

 

907 total views, 1 views today

Google Cloud Message

參考資源

目的

其實就是向 Google GCM Server 發送以下字串,看不懂直接看下面的實際指令範例就可以明白了

Content-Type 和 Authorization 是 HTTP 的 header ,下面的 JSON 是 POST 的資料

key= 是 API 的 Key

to 是對象,可以使用 /topics 進行主題式的廣泛訂閱,或是使用 Token 作一對一通知

data 是內容,一般都是自訂的格式,然後在 Client 端自行解析,不過通常都會有 message 的資訊

發送時 hoyo 不建議使用坑爹官方 SDK ,因為就是 HTTP 自己用程式組合或是使用系統 curl 指令即可

使用主題 topics 方式

 

使用 Token 一對一方式

Client 端必須先向 GCM Server 註冊後得到 Token,即可使用此 Token 做一對一的通知

 

網站以可以收到 GCM 通知,使用 Chrome

 

 

451 total views, 1 views today