[PHP]CodeIgniter環境下的LineBot(1)

使用PHP,在CodeIgniter環境下建立Line機器人

本篇主要方向:初步達成自動回話的功能

第一次紀錄PHP就用Line機器人來做開端吧。
CodeIgniter是個MVC架構的Framework,所以只要建立一個Linebot的Controller,把這個Controller當成Webhook就行了。

我使用的環境:
XAMPP 3.2.2整包裝起來
IDE:NetBeans
Framework:CodeIgniter 3.1.6

在一切設定完畢後,開啟NetBeans並建立一個專案,在Controller下建立LINEBOT.php

並且在這個Controller下輸入程式碼,概念上就是Line使用者對機器人發送訊息,機器人對Webhook Server發送Post,
而Webhook Server取得Post訊息後,分析內文再進行操作(回覆訊息,執行程式等)。

程式碼來源:這裡 感謝這位大師的無私分享

<?php

Class LineBot extends CI_Controller
{

    public function index()
    {
        //從Line Developer上申請的Token
        $accessToken = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';

        //取得機器人丟過來的訊息
        $jsonString = file_get_contents('php://input');
        //轉成JSON
        $jsonObj = json_decode($jsonString);

        //設定變數給JSON的各欄位
        $event = $jsonObj->{"events"}[0];
        $type = $event->{"message"}->{"type"};
        $message = $event->{"message"};
        $replyToken = $event->{"replyToken"};

        //回覆的訊息,replyToken
        $postData = [
            "replyToken" => $replyToken,
            "messages" => [
                [
                    "type" => "text",
                    "text" => $message->{"text"}
                ]
            ]
        ];

         //post url init
        $ch = curl_init("https://api.line.me/v2/bot/message/reply");

        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
            'Authorization: Bearer ' . $accessToken
            //'Authorization: Bearer '. TOKEN
        ));

        curl_exec($ch);
        curl_close($ch);
    }
}

 

概念上其實跟使用C#建構是一模模一樣樣的,問題來了:如果我只是想測試,不想為了一個HTTPS搞半天怎麼辦?

我測試的時候習慣用這個 Ngrok.exe

只要輸入指令就可以生成一個超簡單翻牆程式,用於測試上很方便。

下載後開啟視窗並輸入 ngrok.exe http 80,搞定!自動幫你生出HTTPS!這樣就可以快速解決惱人的Webhook了 (當然,這只是測試,正規作法請考慮AWS,Azure,Heroku 或者自己買個Domain之類的 ...)

如此,我們就初步完成了一個基本的回聲蟲機器人,你說什麼他就回什麼~

 

單純筆記,皆為非正規作法,旁門左道,胡搞瞎搞。