一個起手就離題
今天才發現昨天沒跟大家自我介紹一下報名動機,今天補上一張人權圖。
相信大家在昨天精簡扼要的說明之下已經佈署好自己的專案環境了,如果失敗的話可以再第一天的文章底下留言喔!
或著有什麼你踩到比較特別的雷,也解好願意分享給大家的都可以分享在底下!
進入今天正題之前咧,先吃我的文件連彈吧!
首先你要先辦一個 LINE的官方帳號,這種瑣碎的事情不難,但要講好很難,所以就看這裡吧!
應該不難申請,有一些簡單的小功能也可以直接在後台的介面玩玩看!
這好像是不付費者的詛咒之一吧!
如果你已經辦好你的帳號,那就可以打開你的專案,來開始研究吧!
我們先從 推送訊息
開始看起,看我的影子模仿術!
看!我把這頁面模仿出來了ㄝ
來自己去尋寶看看吧!順便看看文件熟悉下他在幹嘛!
解答在這
剩下兩個就一樣用ctrl F
搜尋 Channel access token
、Channel secret
、Your user ID
然後在你專案的 .env
貼上去,千萬不要貼在 .env.example
喔!不然就傻傻把東西送上火星github了!
LINEBOT_TOKEN=<Channel access token>
LINEBOT_SECRET=<Channel secret>
LINE_USER_ID=<Your user ID>
也要記得在 heroku的專案設定裡加入喔!
接下來我們可以看一下LINEBot.php
到底在賣什麼挖溝!靠這麼多東西我是要看什麼!
沒關係,先從這裡看起LINEBot.php
namespace LINE;
(...略)
/**
* LINEBot constructor.
*
* @param HTTPClient $httpClient HTTP client instance to use API calling.
* @param array $args Configurations.
*/
public function __construct(HTTPClient $httpClient, array $args)
{
$this->httpClient = $httpClient;
$this->channelSecret = $args['channelSecret'];
$this->endpointBase = LINEBot::DEFAULT_ENDPOINT_BASE;
if (array_key_exists('endpointBase', $args) && !empty($args['endpointBase'])) {
$this->endpointBase = $args['endpointBase'];
}
}
接著可以知道他要塞一個 HTTPClient
的介面給他!LINEBot.php
namespace LINE\LINEBot;
(...略)
interface HTTPClient
{
(...略)
}
有想法了嗎?沒有的話在回頭看一下文件吧!
啊!想出來了!
原來是要這樣子組合的!
所以我們就可以繃出這樣子的 provider
連結
public function register()
{
$this->lineBotRegister();
}
private function lineBotRegister()
{
$this->app->singleton(LINEBot::class, function () {
$httpClient = new CurlHTTPClient(env('LINEBOT_TOKEN'));
return new LINEBot($httpClient, ['channelSecret' => env('LINEBOT_SECRET')]);
});
}
這樣之後就可以直接透過IOC的方式把它拿來用了 參考一 參考二
/** @var LINEBot */
private $lineBot;
private $lineUserId;
public function __construct($lineUserId)
{
$this->lineUserId = $lineUserId;
$this->lineBot = app(LINEBot::class);
}
好吧~今天時間不夠了,明天星期五,就來點輕鬆的小話題吧!
下個主題就講講我想要做些什麼好了!