ちなみにこの俺くんLINEアカウントは非公式です。
俺くんを知らない人はこちらを見ましょう。
LINE Messaging APIのDatetime picker action
さて、俺くんについてはこれくらいで
今日公式リリースがあったLINE Botの新機能です。
新しいアクション
もともと、テンプレートメッセージを送った際にボタンを押したりすると、テンプレートアクションという色々なアクションを発火させることができました。
- Postback action: 指定したdataをwebhookに送れる
- Message action: 指定したテキストを発言させる
- URI action: 指定したURLを開かせる
-
Datetime picker action(今回追加) : 日付や時刻を選択するダイアログを表示して、選択した情報を
Postback action
のようにデータを送れる
俺くんとの日程調整をしよう
作ったものはこんな感じ。
パーティーのお誘いをするところからスタート
俺くんスタンプでちょうどいい感じのスタンプを使って
-
- 「空いてる日教えてよ」とレスがある / Buttonsテンプレート使ってます
-
- いいよと答えると例の
Datetime picker
が表示されるので答える
- いいよと答えると例の
-
- 予定が合わないらしい
まぁこれだけです。
実装
Node.jsで書いてます。
こんな感じのJSONを書いてBOTにリプライさせます。
"type": "datetimepicker"
の指定の部分です。
気をつけるのがdatetimepicker
を指定する場合はmode
のキーも追加しないといけません。
動作モード
date:日付を選択する
time:時刻を選択する
datetime:日付と時刻を選択する
const messageObject = {
"type": "template",
"altText": "this is a buttons template",
"template": {
"type": "buttons",
"title": "空いてる日程教えてよ",
"text": "Please select",
"actions": [
{
"type": "datetimepicker",
"label": "いいよ",
"mode": "date",
"data": "action=datetemp&selectId=1"
},
{
"type": "postback",
"label": "やっぱりやめたい",
"data": "action=cancel&selectId=2"
},
]
}
};
expressとbody-parserを使ってます。
weoの中身がMessagingAPIでいうところのWebhookEventObject
です。
Datetime Picker
で選択した際にはweb.typeがpostback
が返って来て、weo.postback.params
に日付情報が入っています。
dateモード
を指定していた場合weo.postback.params.date
で日付が取れます。
timeモードを指定してたら
weo.postback.params.time
みたいな感じで指定
/*色々省略*/
app.post('/ore', (req, res) => {
const weo = req.body.events[0];
if(weo.type === 'postback'){
console.log(weo.postback.params.date);
const mes = `${weo.postback.params.date}ね。その日は予定があるんだ、ごめんね。`;
const smo = [{type: 'text', text: mes}];
const res = await reply({replyToken: weo.replyToken, messages: smo});
console.log(res.status);
return;
}
/*色々省略*/
});
/*色々省略*/
おわりに
この機能、出たばかりすぎてなのか
iOS:7.9.0/Android:7.12.0以降で対応しています
とのことで。
普段使ってるAndroid端末では使えなかったというところが致命的でした苦笑
でもオシャレですよね。
日程調整などに是非活用しましょう笑