chat bot를 서버리스로 만들어 보았다 LINE Messaging API × Google Apps Script × DOCOMO API

소개



처음 뵙겠습니다. 앞으로 조금씩 게시하려고합니다.

이번에는 chatbot에 관한 것입니다.
회사에서 향후 chatbot의 안건이 나올 것 같아서 예습이 굳이 만들어 보기로 했습니다.

참고로 한 기사입니다. 보다는 여기에 써 있을 수 있도록 흉내 보았을 뿐입니다.
htps : // 코 m / 폰 조피 / ms / 913 굳이 7f5b1117 네 4860

이런 느낌이 듭니다. 별로 대화가 이루어지지 않았습니다.


사용한 것


  • Google Apps Script(GAS)
  • LINE Messaging API
  • DOCOMO 잡담 대화 API

  • 절차 요약


  • Google Apps Script 준비
  • LINE Messaging API 신청하기
  • DOCOMO 잡담 대화 API 신청하기
  • Google Apps Script에서 LINE 및 DOCOMO API를 두드리는

  • 절차 상세



    Google Apps Script 준비



    놀라울 정도로 번거로움이 들지 않았다.
    1. Google 계정 얻기
    1. 크롬에 Google Apps Script 넣기
    1. Google 드라이브에서 '신규'-> '기타'-> '앱 추가'에서 GAS 선택

    LINE Messaging API 신청하기



    신청은 여기에서 합니다. 이때 LINE 계정이 필요합니다. 평소에 내가 사용하는 개인 계정을 사용했습니다. 개발용의 계정을 준비하고 싶었습니다만 전화 번호를 복수 가지고 있지 않기 때문에 하는 방법 없이입니다. (facebook 제휴라면 전화번호 없이도 LINE 계정을 만들 수 있는 것 같습니다)
    ぇぺぺrs. 네. 메/그럼/어서 x. HTML







    DOCOMO 잡담 대화 API 신청하기



    여기에서 신청합니다.
    htps : // v. smt. 아무도. 네. jp/? p = 그럼 x
    (스쿠쇼를 찍는 것을 잊고, 취하려고 생각하면 메인터넌스중에서 찍을 수 없었습니다. 마음이 향하면 추기합니다.)

    Google Apps Script에서 LINE 및 DOCOMO API를 치십시오.


    doPost 에서 post를 받습니다.
    그리고 doPost 함수에서 UrlFetchApp.fetch 로 LINE Messaging API를 호출합니다.
    fetch로 지정한 URL이 LINE Messaging API의 URL입니다. https://api.line.me/v2/bot/message/reply회신의 문언은 getDialogueMessage 로 잡담 API를 두드리고, 반환해 온 내용을 response_message 에 담고 있습니다.
    이제 LINE의 토크로 대화할 수 있게 됩니다.
    
    var CHANNEL_ACCESS_TOKEN = 'LINE DEVELOPERで作成されたアクセストークン';
    var DOCOMO_DIALOGUE_APIKEY = 'DOCOMO雑談APIのAPIKEY';
    
    function doPost(e){
      var reply_token = JSON.parse(e.postData.contents).events[0].replyToken;
      if(typeof reply_token === 'undefined'){
        return;
      }
      var user_message = JSON.parse(e.postData.contents).events[0].message.text;
      var response_message = getDialogueMessage(user_message);
      var url = 'https://api.line.me/v2/bot/message/reply';
      UrlFetchApp.fetch(url, {
        'headers': {
          'Content-Type': 'application/json; charset=UTF-8',
          'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
        },
          'method': 'post',
          'payload': JSON.stringify({
            'replyToken': reply_token,
            'messages': [{
              'type': 'text',
              'text': response_message,
            }],
          }),
        });
      return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
    }
    
    function getDialogueMessage(mes) {
      var dialogueUrl = 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=' + DOCOMO_DIALOGUE_APIKEY;
      var dialogue_options = {
        't': 20,
        'utt': mes
      };
      var options = {
        'method': 'POST',
        'contentType': 'text/json',
        'payload': JSON.stringify(dialogue_options)
      };
      var response = UrlFetchApp.fetch(dialogueUrl, options);
      var content = JSON.parse(response.getContentText());
      return content.utt;
    }
    

    좋은 웹페이지 즐겨찾기