やりたいこと
GAS(Google Apps Script)で、Hangout Chat用のbotを個人用に作っています。
LINEの「リマイン君」の簡易版のような Reminder botを作り、タスク管理をするつもりです。
- ユーザーからの入力は2回(予定の入力、予定通知日の指定)、
- botからの反応は3回です(予定の登録完了、予定と通知日の登録完了、予定のお知らせ)。
- タスク管理を行うにあたり、ユーザーとボット側で、それぞれ下記の処理を行います。
Reminder Botの動作フロー
- ユーザ)予定を入力する
//「母親に連絡」
-
ボット)予定の登録、通知日の確認を行う
//『××ですね。いつ知らせますか?』 -
ユーザ)予定を通知して欲しい日を入力する
//「明日」、「〇月△△日」 -
ボット)通知日の登録、確認メッセージを出す
//『〇月△△日に知らせます』
- ボット)通知日を迎えたら、通知メッセージを出す
//『××の時間です!』
問題点
できたこと
- ユーザが予定を入力して(例:母親に電話する)、
- botが応答する(「母親に電話する」ですね。いつ知らせますか?)、
- ユーザが予定通知を入力(例:8月10日)までを実装しましたが、
その先の(4)確認メッセージをbotに吐かせるところで、詰まっています。
困っていること
- ユーザが予定を入力すると(例:母親に電話する)、その内容がcreated_plan変数にされます。
- created_plan変数に値が入ると(created_plan変数の初期値は"")、通知日を登録する処理に
分岐するようif文の条件式(!created_plan)を書きましたが、処理が分岐してくれません。 - created_plan変数の初期値を適当に入力して("test"等)、値が入った状態であれば、分岐してくれます。
js
1var created_plan = ""; 2 3function onMessage(event) { 4 if(!created_plan){ 5 // (1)ユーザの予定を登録 6 created_plan = event.message.text; // 1.予定を登録 7 return { "text": created_plan + "ですね。いつ知らせますか?"}; // 2. 通知日の確認 8 } else { 9 // (2)予定の通知日を登録 10 var notification_date = event.message.text; // 3~4: 通知日を登録 11 return { "text": notification_date + "に知らせます。"}; // 4.確認メッセージを出す 12 }; 13}
相談内容
以上の動きから、ボットが応答する(プログラムがreturnを返す)ごとに、変数created_planの中身がリセットされるため、ユーザーの入力値を保持できないことが分岐できない理由だと思います。
ユーザーの1回目の入力(=ユーザーの予定)を変数created_planに保持したまま、ユーザーの2回目の入力(=予定の通知日)を、ボットが処理する方法を模索しています。ご教示ください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/06 01:30 編集