이제 SlackBot을 만들어 보았습니다 : 대화

15751 단어 슬랙slackbotNode.js
지난 번부터 계속해서 SlackBot을 사용자 정의합니다.
이제 다시 SlackBot을 만들어 보았습니다.
이제 SlackBot을 만들어 보았습니다 : Slach Commands
이제 SlackBot을 만들어 보았습니다 : Interactive Components

이번은 대화입니다.
뭔가 신청서를 입력하거나 설문 답변을 알기 쉽습니다.

자세한 내용은 아래를 참조하십시오.

slack api: Interacting with users through dialogs
htps : // 아피. scck. 코 m / ぢ 아 gs

Permission 설정



전회까지를 진행해 주시고 있는 경우는, 특히 추가의 권한 부여는 불필요합니다.

서버측 구현



전에 대화 상자를 표시하는 계기로 SlashCommands를 설정합니다.
(다이얼로그 표시시에는, trigger_id가 필요합니다. SlashCommands로부터의 메세지에는 그것이 포함됩니다)

Features-Slash Commands를 엽니다.



Create New Command 버튼을 눌러 생성합니다.



서버측의 구현입니다.
app.command는 변경, 그렇지 않으면 추가입니다.

controllers\slack_testbot\index.js
app.command(async (body, web) =>{
    if(body.command == '/hi'){
        var hour = new Date().getHours();

        var greeting = 'こんにちは';
        if( 5 <= hour && hour <= 9 )
            greeting = 'おはよう';
        else if( 18 <= hour && hour < 5 )
            greeting = 'こんにちは';

        var message = {
            text: greeting + '' + (body.text ? (' ' + body.text + " です。") : '')
        };
        app.responseMessage(body.response_url, message );
    }else if( body.command == '/query'){
        var message = {
            text: "選択肢を表示します。",
            blocks: blocks,
        };
        app.responseMessage(body.response_url, message );
    }else if( body.command == '/dialog'){
        options.trigger_id = body.trigger_id;
        app.dialogOpen(options);
    }
});

app.submission(async (body, web) =>{
    var message = {
        "text": '回答ありがとうございました。',
    };
    app.responseMessage(body.response_url, message );
});

app.cancellation(async (body, web) =>{
    var message = {
        "text": 'キャンセルされました。',
    };
    app.responseMessage(body.response_url, message );
});

var options = {
    dialog: {
      callback_id: "dialog1",
      title: "試食のアンケート",
      submit_label: "送信する",
      notify_on_cancel: true,
      elements: [{
          type: "text",
          label: "試食した食べ物",
          name: "name",
          placeholder: 'food'
        },
        {
          label: "評価",
          type: "select",
          name: "review",
          options: [{
              label: "すごく美味しい",
              value: "very_good"
            },
            {
              label: "美味しい",
              value: "good"
            },
            {
              label: "普通",
              value: "normal"
            },
            {
              label: "不味い",
              value: "bad"
            },
            {
              label: "すごく不味い",
              value: "very_bad"
            }
          ]
        },
        {
          type: "textarea",
          label: "その他",
          name: "others",
          hint: "好きに書いてください",
          optional: "true"
        }
      ]
    },
    trigger_id: ''
};

app.command에서 받은 메시지에 포함된 trigger_id를 사용합니다.

동작 확인



이번에도 Android의 Slack 앱에서 동작 확인했습니다.

/dialog를 입력하면,



대화 상자가 표시되었습니다!



이런 식으로 입력하고 오른쪽 상단 전송을 누르면,



app.submission이 호출되었으며 응답 메시지가 반환되었습니다.



서버 측에서는 app.submission의 콜백 함수에 다음 데이터가 반환되어 있습니다.
  "submission": {
    "name": "ハンバーグ",
    "review": "very_good",
    "others": null
  },

덧붙여서, 보내지 않고 돌아가면 다음과 같이 app.cancelleation이 호출되고 응답 메시지가 반환됩니다.



이상

좋은 웹페이지 즐겨찾기