Day18-Webhook 实作(番外篇)LINEBot 之 LINEBotTiny

大家好~
这几天应该对 line-bot-sdk-php 有了一些初浅的认识啦~
不过在 line-bot-sdk-phpREADME.md 上有提到的 line-bot-sdk-tiny 一直都没介绍到,
今天就来看一下 line-bot-sdk-tiny 吧!

前言

下面这段话是 line-bot-sdk-phpREADME.md 上的一段简介:

A very simple SDK (subset) for the LINE Messaging API for PHP. line-bot-sdk-tiny provides a simple interface and functions which makes it a good way to learn how to use the LINE Messaging API.

相对於原本 line-bot-sdk-php 实作的那些功能,
line-bot-sdk-tiny 真的是 simple 非常多!

line-bot-sdk-tiny

今天用 line-bot-sdk-tiny 实作 Flex Message,
顺便看一下 line-bot-sdk-tiny
原始码的部分就不太会贴上来啦,
这边附上 GitHub 的连结,
如果已经下载过了,
也可以从以下路径中找到档案喔~
vendor/linecorp/line-bot-sdk/line-bot-sdk-tiny/LINEBotTiny.php

那就先从 parseEvents() 开始吧!

parseEvents()

parseEvents() 会帮我们对 Request 做哪些检查呢?

  • 检查 HTTP request method
  • 检查 Request body 是否为空
  • 检查签名
  • 检查 Request body 的 events property

replyMessage($message)

主要是在设定回传讯息时 Request 的 HTTP header 与 API URL ,
Channel access token 也会被放入 header 的 Authorization 内。
也会帮我们把要回传讯息的内容转成 JSON 喔~

sign($body)


LINE Messaging API 签名的产生方式是用 sha256 与 Channel secret 对 Request body 进行加密後,
输出二进位的结果,
再用 base64 做编码。

实作篇

$linebotTiny = new LINEBotTiny(
    env('LINE_BOT_CHANNEL_ACCESS_TOKEN'),
    env('LINE_BOT_CHANNEL_SECRET')
);
$event = $linebotTiny->parseEvents();
$replyToken = $event[0]['replyToken'];

$flexContent = 'Flex message content...';

$linebotTiny->replyMessage([
    'replyToken' => $replyToken,
    'messages' => [
        [
            'type' => 'flex',
            'altText' => 'this is a flex message',
            'contents' => $flexMessageContent
        ]
    ]
]);

return response('HTTP_OK', Response::HTTP_OK);

范例中的变数 $flexMessageContent 就是 PHP Array 格式的 Flex Message,
但因为内容过长,
就不放上来占版面啦,
先用一段字串示意一下。

成果预览:

小结

  1. Channel access token 是用来放在 header 的 Authorization 内的。
  2. Channel secret 用来生成签名。
  3. 只要将 Flex Message 的模板设计好後,再把 JSON 转成 PHP Array 就可以直接使用啦~

会发这篇主要是因为昨天使用 Flex Message 时,
感觉到 line-bot-sdk-php 的不便之处...
FLEX MESSAGE SIMULATOR 上设计好模板後,
还要用符合 FlexMessageBuilder 要求的方式将刚刚设计好模板实作出来,
对我而言使用起来不是那麽的便利...
所以想说分享一下 line-bot-sdk-tiny

由於 line-bot-sdk-tiny 原始码不多,
但 LINE Messaging API 的基本功能他都具有,
所以从 line-bot-sdk-tiny 开始认识 LINE Messaging API,
也是种不错的方式吧~

大家明天见啦~
若文章有任何问题,
还请大家不吝赐教!


<<:  Angular ViewChild 与 ViewChildren 介绍

>>:  如何给予团队反馈

远端系列-5:如何拉回远端数据库的档案?

角色情境 小明同时学会输入指令操作着终端机、 以及透过滑鼠操作着图像化介面的 Sourcetree ...

使用 Google 表单快速建立实名制出入场所登记资料 COVID-19

免接触 免拿笔签名 流程 人进场 --> 手机扫描 QR --> 填写资料 -->...

Day20:Flow 想在其他的执行绪执行,可以吗?

Flow 是属於 coroutine 范围项目,coroutine 中一个重要的特点可以轻易的切换执...

Day26 如何改善专注力?

大家好,我是乌木白,今天想和大家谈谈专注力这件事情。 浅谈自己的专注力 认识我的人,都知道其实我的...

熟习-使用

在新建立的小试用专案内熟悉所有会使用的UI界面与其功能性,并尝试组成一页界面,用於练习。而编辑程序码...