原本於Day26打算利用Message API来完成LINE Bot功能,但发现Webhook需要搭配https,而且SSL从购买的价钱到设定的步骤我对新手没有到非常友善,为了以完成功能为主采用另外一种方法来完成推播汇率的功能。
这次采用的是LINE Notification,一样先利用LINE的帐号注册登入,登入後於右上角点选个人页面後点选发行权杖
权杖名称自行设定一个想用的名字即可,接收通知的聊天室先选择透过1对1聊天接收LINE Notify的通知
此时将此Token复制起来保存好,关闭之後就看不到Token要重新开一个权杖了。
接着开始程序的撰写,先下指令创建一个Command
php artisan make:command lineNotification
参数设定
protected $signature = 'line:notification';
protected $description = 'Notification exchange rate by line';
接着点开发行权杖下方的LINE Notify API Document,看一下官方提供的API要怎麽操作
直接看到这只APIPOST https://notify-api.line.me/api/notify
这边是我觉得很重要的地方,官方有限定传输资料的格式
在Laravel的官方可以看到如果要传出application/x-www-form-urlencoded格式的资料的话需要多一个asForm()
function,我自己实作时因为没有注意到这项讯息所以卡关了一下。
接着於Command上方引入Http套件use Illuminate\Support\Facades\Http;
,於handle写入逻辑。
$response = Http::withHeaders([
'Authorization' => 'Bearer ' . 'your token',
])
->asForm()
->post('https://notify-api.line.me/api/notify', [
'message' => 'test',
]);
withHeaders的地方要填写权杖,Token的前方要加上Bearer ,不要忘记空白键一格
asForm是为了让传输资料的格式变为application/x-www-form-urlencoded
接着将资料以POST method传送至指定API
此时就可以下指令测试了php artisan line:notification
此时已经会收到通知了,所以开始来撰写汇率的逻辑
筛选出最新一笔美金对台币的汇率
$exchangeRate = ExchangeRate::select(
'exchange_rate',
'currency',
'created_at',
)
->where('currency', 'TWD')
->orderBy('created_at', 'DESC')
->first();
组合一下要传送的字串
$message = '今日 USD 对 ' .
$exchangeRate->currency .
' 汇率为 ' .
$exchangeRate->exchange_rate .
' 更新时间 ' .
$exchangeRate->created_at;
替换要传送的变数
->post('https://notify-api.line.me/api/notify', [
'message' => $message,
]);
此时再下一次指令php artisan line:notification
可以看到功能已经完成了
最後只要在Kernal加上定时推播即可,将时间订在串接汇率API後的半小时,这样就可获得比较新的汇率
$schedule->command('line:notification')->dailyAt('08:30');
如此一来就完成了一开始想要的功能,一早起床打开手机就可以马上获得最新的汇率了。
今天的介绍就到这边结束了,谢谢观看的各位,请记得按赞分享开启小铃铛,你的支持会让按赞数+1。
<<: [2021铁人赛 Day12] General Skills 09
今天是 Build Optimizations 主题的最後一篇了,到目前为止我们已经认识了 Cod...
立案後的费用产生 很多人会产生一个疑问,立案後如果没有营业跟有营业的费用产生的差别。 这里必须要先说...
Chap.I 理论基础 Part 2:微积分 4. Critical Points and Opti...
导入自动化,期望达到减少人力资源,降低成本,提高生产力等等。而软件工程的自动化已经开始转换成 Dev...
目标 安装环境 勘误修正及补充 1. 前言 到目前为止 已经把永丰的api参数以及相关制作流程做完了...