🐘
PHP+HerokuでLINE BOT作ってみた
はじめに
先人の知恵があったのでサクッと作れました😌
- とりあえずLINE BOT APIでオウムを作ってみた
http://qiita.com/masuidrive/items/1042d93740a7a72242a3 - LINE BOT をとりあえずタダで Heroku で動かす
http://qiita.com/yuya_takeyama/items/0660a59d13e2cd0b2516
作ったもの
「ぬるぽ」に「ガッ」するbotです。以下のQRコードで友だちになれます。
準備
- HerokuアプリにFixieアドオンを入れる
- LINEの
Callback URL
をhttps://{アプリ名}.herokuapp.com:443/callback
って感じで設定 - Herokuの環境変数にLINEの
Cannel ID
Channel Secret
Channel MID
を設定 - LINEの
Server IP Whitelist
にFixieのOutbound IPs
をxxx.xxx.xxx.xxx/24
って感じで登録
コード
以下で公開してます。
https://github.com/ttskch/line-nullpo
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Symfony\Component\HttpFoundation\Request;
$app = new Silex\Application();
$app->post('/callback', function (Request $request) use ($app) {
$client = new GuzzleHttp\Client();
$body = json_decode($request->getContent(), true);
foreach ($body['result'] as $msg) {
if (!preg_match('/(ぬるぽ|ヌルポ|ヌルポ|nullpo)/i', $msg['content']['text'])) {
continue;
}
$resContent = $msg['content'];
$resContent['text'] = 'ガッ';
$requestOptions = [
'body' => json_encode([
'to' => [$msg['content']['from']],
'toChannel' => 1383378250, # Fixed value
'eventType' => '138311608800106203', # Fixed value
'content' => $resContent,
]),
'headers' => [
'Content-Type' => 'application/json; charset=UTF-8',
'X-Line-ChannelID' => getenv('LINE_CHANNEL_ID'),
'X-Line-ChannelSecret' => getenv('LINE_CHANNEL_SECRET'),
'X-Line-Trusted-User-With-ACL' => getenv('LINE_CHANNEL_MID'),
],
'proxy' => [
'https' => getenv('FIXIE_URL'),
],
];
try {
$client->request('post', 'https://trialbot-api.line.me/v1/events', $requestOptions);
} catch (Exception $e) {
error_log($e->getMessage());
}
}
return 'OK';
});
$app->run();
ひとこと
- ローカルで
$ heroku logs -t
しながら、必要に応じてerror_log()
とかでプリントデバッグしながら開発するのがお手軽です
Discussion