はじめに
最近仕事でLaravel上に、LINEやTwilioを使用したBOT作成に勤しんでいて、メッセージってBladeテンプレート使えないの??
ってので、調べてみたらあっさりできてしまったのでその方法を残しておきます。
やり方
Viewのrenderメソッドを使うと、viewの展開後文字列を取れるのでこれをメッセージとして使用すればOK。
ソース
resources/views/bot/send.blade.php
{!! $message !!}
app/Http/Controller/Api/LineBot.php
public static function sendText($view, $to, $message)
{
$bot = new \LINE\LINEBot(
new \LINE\LINEBot\HTTPClient\CurlHTTPClient('あなたLINE@のAPIトークン'),
['channelSecret' => 'あなたLINE@のChannelシークレット']
);
$textMessageBuilder = new TextMessageBuilder(view($view, compact('message'))->render());
$bot->pushMessage($to, $textMessageBuilder);
}
LineBot.phpを使うPHPファイル
$send_content
LineBot::sendText('bot.send', '送信先LINE ID', 'LINEに送信してみました');
解説
以下のメソッドで用意したviewにmessage変数の値が展開された状態のstringが取れるので、
これでTextMessageBuilderを作ってあげてればOK。
view($view, compact('message'))->render()
これだけだと有難味が微妙ですが、
Webで送信メッセージを作ってDBに入れて置きあとで使う、と云った場合に改行コードなどを気にせずに値をバインドして送信できるので、
割とストレスなくコードが書けるようになるのではないでしょうか。
ImageMapの埋め込みなども、こんな感じで上手いことやりたいですが、まだ検証できてないのでそれはまた今度・・・。