menachav
@menachav (mena ..)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

[LINEbot] 予定を追加する機能を実装したい

解決したいこと

予定を追加する機能を実装したい

TypescriptでGoogleCalendarAPIを用いた予定を追加する機能を実装していますが実装する上でわからないところがありました.

やりたいこと

スクリーンショット 2022-03-07 21.02.14.png
追加したい予定日を送信したら,その予定日を格納させたいんですが,その実装方法がわかりません.

該当するソースコード


export const SendListSchdule = async (
  client: Client,
  event: WebhookEvent
): Promise<void> => {
  try {
   
    if (event.type !== "message" || event.message.type !== "text") {
      return;
    }
    // メッセージ関連変数の処理
    const { replyToken } = event;
    const { text } = event.message;

     let count=0;
     if(text==="追加"){
      // 追加したい予定日を教えてくださいとメッセージを送る
            await client.replyMessage(replyToken, scheduleMessage());

           //予定日を入力させる処理をどの様に実装させればよいかわからない
     //入力させたらswitchの処理を行わせたい
      count=1;
    }else {
      await client.replyMessage(replyToken, ErrorMessage());
    }
    // 予定を追加する処理
    switch (count) {
      case 1:
        // 入力してもらった予定日を格納する
        let schedule = text;
        // 開始時刻を教えてくださいとメッセージを送る
        count = 2;
        break;
      case 2:
        // 入力してもらった開始時刻を格納する
        //以下略
    }
  } catch (e: unknown) {
    console.log(e);
  }
};

よろしければご教授お願いします.

0

1Answer

はじめに

 こんにちは、LINEbotの実装でお困りのようなのでアドバイスを送らせていただきます。
僕は読解力がないので、質問を読んでどこら辺がお困りなのか詳細にはつかめませんでした。
ですので、回答を何パターンか用意しました。(的確ではないかもしれませんがご了承ください。)

単純にAPIの使い方が分からない場合

 これは、なんとも言えないのでGoogleの公式ドキュメントを読むか、このような記事があったので参考にしてください。
https://qiita.com/takeshi_hirosue/items/f0cf49b3969a03ab6988

ユーザーのメッセージを分岐させる方法でお困りの場合

 僕であれば、データベースにユーザーが今どんな操作をしているかモードを記録します。
例えば、LINEbotのAPIからユーザーのIDが取れると思います。
そのIDとユーザーの操作状況を紐づけて保存すれば、次にどんな値が送信されてくるかあらかじめ知ることができると思います。(送信された値も保存)

こんな感じ↓

uid mode name date start end
user_a 予定名入力モード
user_b 開始時間入力モード 卒業式 3/10
user_c 終了時間入力モード 入学式 4/9 13:50
user_d 日付入力モード

 あとは、ユーザーのモードにそぐわない予期しない値が送られてきた場合の対策が大切です。
しっかりテキストを解析して、なるべくエラーを出さないようにしましょう。
 ちゃんと操作途中でキャンセルできるようにすることも大切だと思います。

処理の流れ

  • イベント発生
  • ユーザーID取得
  • ユーザーのモード取得
  • キャンセル確認(キャンセルの場合DBのモードをリセット)
  • モードによってテキストの処理を分岐(ここでAPIをたたくなりしてください)

最後に

 アプリ開発では、ユーザーのステート管理(状態管理と)予期せぬエラーを防止することの2点がとても重視されると思います。
 この回答が的確かどうかはわかりませんが、お役に立てることを願っています。

0Like

Your answer might help someone💌