使用Azure+PHP+Google試算表建置LINE@回應機器人

LINE@BOT機器人

使用Azure+PHP+Google試算表建置LINE@回應機器人

講師: 林壽山(superlevin@gmail.com)

事先準備

申請Azure免費帳號

申請LINE@帳號

申請Google帳號

申請LINE Developer帳號

使用Google試算表當資料庫

Google雲端試算表一直是很棒的服務,其實要把它變成API來使用也不困難,在參考了 Simple example of retrieving JSON feeds from Spreadsheets Data API 以及 Use a Google Spreadsheet as your JSON backend 二篇文章後,重點在下面這行(更改 PUT-KEY-HERE即可)。

https://spreadsheets.google.com/feeds/list/PUT-KEY-HERE/od6/public/values?alt=json

步驟一:

進入雲端硬碟

步驟二:

新增 Google 試算表

步驟三:

在這個範例中,我們打算打關鍵字後讓LINE回應店名、電話及住址。所以新增欄位如下

步驟四:

點選 檔案 →發佈到網路

步驟五:

按下發佈後,我們會得到一組連結

步驟六:

連結如下,我們要將中間的 KEY取出,也就是 2PACX-1vQCwsA8fw6xI1BAEOkJI2l0qy_qS1S-4fdP6sJtOue1zkz71oE3UEEPEBght8NxU1JRKSOZcgqkVnky

https://docs.google.com/spreadsheets/d/e/2PACX-1vQCwsA8fw6xI1BAEOkJI2l0qy_qS1S-4fdP6sJtOue1zkz71oE3UEEPEBght8NxU1JRKSOZcgqkVnky/pubhtml

步驟七:

套用後如下

https://spreadsheets.google.com/feeds/list/1ggAB1JfVFne-E7VCWT3TG8KPFyEXxZHVjmei-F_bYv8/od6/public/values?alt=json

步驟八:

貼至瀏覽器後確認規格是JSON

申請Line@官方帳號及Developer

步驟一、

進入 http://at.line.me/tw/點選開始使用LINE@帳號

步驟二、
點選開始使用一般帳號,依步驟註冊

步驟三、
進入 https://developers.line.me/en/註冊開發者帳號,依步驟註冊

步驟四、
進入開發者帳戶,點選 Start using Messaging API

步驟五、

點選服務提供者

步驟六、

填入相關資料

步驟七、

建立完成後,點選 Configuration not yet complete

步驟八、

記下下列重要資訊

申請Azure服務

步驟一、
進入Azure首頁,應用程式服務→新增→建立應用程式→Web應用程式

步驟二、
輸入相關資訊後按建立

步驟三、

LINE@ BOT程式

步驟一、

https://github.com/line/line-bot-sdk-php 下載檔案

步驟二、

解開後我們只要 LINEBotTiny.php就好,接著新增bot.php程式碼如下

<?php

/****************************************
 * LINE 機器人範例
 * 作者:林壽山
 * 聯絡資訊: superlevin@gmail.com
 ***************************************/

require_once('./LINEBotTiny.php');

// 重要資訊1
$channelSecret = "688ec146c3313f33a13b092b09b54f9e";
// 重要資訊2
$channelAccessToken = "wHrkLZVJ6cdM8Z8Kl4HNLtZniDoHziZRzAt+omUamrIOqsGBZypLZWxHJnTOGInwyubB+FOE4UcP/NPr4mF9QId90wAdzisqnwnGYBCvS8tz+NhrfU7N8dqk/ZOkeqzjYqdczC/s4iX1OWP6gvyHAAdB04t89/1O/w1cDnyilFU=";
// Google表單資料
$googledataspi = "https://spreadsheets.google.com/feeds/list/1ggAB1JfVFne-E7VCWT3TG8KPFyEXxZHVjmei-F_bYv8/od6/public/values?alt=json";

// 建立Client from LINEBotTiny
$client = new LINEBotTiny($channelAccessToken, $channelSecret);

// 取得事件(只接受文字訊息)
foreach ($client->parseEvents() as $event) {
switch ($event['type']) {       
    case 'message':
        // 讀入訊息
        $message = $event['message'];

        // 將Google表單轉成JSON資料
        $json = file_get_contents($googledataspi);
        $data = json_decode($json, true);           
        $store_text=''; 
        // 資料起始從feed.entry          
        foreach ($data['feed']['entry'] as $item) {
            // 將keywords欄位依,切成陣列
            $keywords = explode(',', $item['gsx$keywords']['$t']);

            // 以關鍵字比對文字內容,符合的話將店名/地址寫入
            foreach ($keywords as $keyword) {
                if (mb_strpos($message['text'], $keyword) !== false) {                      
                    $store_text = $item['gsx$storename']['$t']." 地址是:".$item['gsx$storeaddress']['$t'];                 
              }
            }
        }       



        switch ($message['type']) {
            case 'text':
                // 回覆訊息
                // 第一段 你要想找_(原字串)_ 讓我想想喔…
                // 第二段 介紹你_______不錯喔
                $client->replyMessage(array(
                    'replyToken' => $event['replyToken'],
                    'messages' => array(
                        array(
                            'type' => 'text',
                            'text' => '你想要找'.$message['text'].' 讓我想想喔…',
                        ),
                        array(
                            'type' => 'text',
                            'text' => '介紹你 '.$store_text.' 不錯喔',
                        )

                    ),
                ));               
                break;
            default:
                error_log("Unsupporeted message type: " . $message['type']);
                break;
        }
        break;
    default:
        error_log("Unsupporeted event type: " . $event['type']);
        break;
}
};

步驟三、

FTP上傳至Azure後,回到Line Developer設定

步驟四、

關閉LINE@自動回應功能,才能避免出現沒有辦法對用戶個別回覆的訊息。

步驟五、

加入LINE@帳號

步驟六、

試問問題

參考資料:

Google Sheets API

我要留言

留言

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *