GAS에서 LINEbot을 만들어 보았습니다.

15094 단어 gas


만들려는 배경


  • 우선 무언가의 LINEbot을 만들고 싶었다.
  • API에 대한 지식이 얕기 때문에 API의 기술을 접하고 싶었기 때문에.
  • 쓰레기의 삐걱거림 때문에 가족이 잘 싸우기 때문에, 그룹 라인에 쓰레기bot을 넣는 것으로 조금이라도 싸움이 줄어 줬으면 좋겠다고 생각했기 때문에.

  • 했던 일



    1. LINEbot을 만들기 위해 LINEdevelopers를 등록, 설정
    2. 메시지를 보내기 위한 프로그램 만들기
    3. 그룹 ID 취득
    4. 테스트

    1. LINEbot을 만들기 위해 LINEdevelopers를 등록, 설정



    처음의 LINEbot 작성이라고 하는 것으로, 어딘가 어려운 것을 생각하고 있었습니다만, bot 자체의 작성은 의외로 간단하고, 우선은

    1. LINEdevelopers 에 등록
    2. 콘솔에서 새로운 공급자
    3. 메시징 API를 만듭니다. 이때 설정하는 채널명이 bot의 계정명이 됩니다.
    4. 메시징 API 설정에서 그룹 채팅을 활성화, 자동 회신을 비활성화, 메시지의 자동 회신 설정에서 webhook을 활성화로 설정.
    5. Webhook settings, Webhook URL에 스크립트 URL을 입력 (스크립팅 후 게시)
    ① 배포에서 새 배포 선택
    ② 웹 앱으로 배포
    ③ URL 복사
    ④ Webhook settings, Webhook에 복사, 실행.




    이것으로 기본적인 설정은 종료. QR에서 bot도 추가할 수 있습니다★

    메시지를 보내는 프로그램 만들기



    이번은 프로그래머로서 처음으로 부모의 도움이 되는 것을 만든 이야기(LINEbot) 이쪽의 기사를 참고로 했습니다.
    function notifyGarbageRemoval() {
    
      //urlはbotが一方的に送ってくるようにしたいので最後はpushになります。(返信用ならreply)
      var url = 'https://api.line.me/v2/bot/message/push';
    
      //botのチャネルトークンに関しては自分の作成したbotの管理画面のMessagingAPIの下の方にあります
      var channelToken = '?????......';
      const youbi = ["","","","","","",""];
      var text = "";
    
      //後に下の方で説明させていただきます。
      var to = "C....";
      //Dateオブジェクト関連の処理の準備
      var date = new Date();
      date.setDate(date.getDate());
      var dayIndex = date.getDay();
      var day = ["", "", "", "", "", "", ""];
    
      if (day[dayIndex] == "" || day[dayIndex] == "") {
        text += "今日は燃やすゴミの日";
      }
    
      if (day[dayIndex] == "") {
        text += "今日は燃やさないゴミ/有害・危険ゴミの日";
      }
    
      if (day[dayIndex] == "") {
        text += "今日は資源ごみの日";
      }
    
      var messages = [{
        'type': 'text',
        'text': text,
      }];
    
      //--ゴミ出しの日以外は送らない--//
      if ((day[dayIndex] == "") || (day[dayIndex] == "") || (day[dayIndex] == "") || (day[dayIndex] == "")){
    
        UrlFetchApp.fetch(url, {
          'headers': {
            'Content-Type': 'application/json; charset=UTF-8',
            'Authorization': 'Bearer ' + channelToken,
          },
          'method': 'post',
          'payload': JSON.stringify({
            "to" : to,
            'messages': messages,
          }),
        });
      }
    }
    

    3. 그룹 ID 취득


    /*
    LINEで受信したレスポンスをスプレッドシートに書き込む
    ———————————–*/
    function doPost(e) {
        /* スクリプトプロパティのオブジェクトを取得 */
        const prop = PropertiesService.getScriptProperties().getProperties();
        /* レスポンスを取得 */
        const response = e.postData.getDataAsString();;
        const spreadsheetId = "[シートIDを指定]"; // シートIDを指定
        const sheetName = "log"; // シート名を指定
        const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
        const sheet = spreadsheet.getSheetByName(sheetName);
        /* スプレッドシートに書き込む */
        sheet.appendRow([new Date(), response]);
    }
    

    【LINE BOT】GAS로 「userId」의 취득 방법 이 기사를 참고로 했습니다.
    상기 기사에서 취득한 그룹 id를 to=""안에 세트.
    var to = "C....";
    

    4. 테스트



    그룹 ID, 토큰 및 스크립트의 URL 입력을 확인한 후 GAS 시계 표시를 선택하여 스크립트가 실행되는 시기를 결정합니다. 그게 제대로 bot가 움직이는 것을 확인하면 OK!


    결과



    제대로 설정한 시간대로 bot이 쓰레기의 날을 알려주었습니다! (테스트 시에는 1분 간격으로 설정)
    만약 동작이 잘 되지 않았다면,
  • 토큰 재발행.
  • 새로 배포하여 URL을 업데이트합니다.
  • 그룹 id를 확인한다.
  • 메시징 API 설정을 다시 확인하십시오.

  • 이 근처를 다시 확인해 보세요.

    친가에서는 자주 쓰레기 버려 문제로 부모와 여동생이 비비고 있었으므로, bot를 도입할 수 있어 매우 기뻐해 주셨습니다😊
    구현하고 어렵다고 느낀 포인트는 그룹 ID 취득 정도입니다.
    linebot을 사용하는데 있어서의 그룹 id나, 그 외 여러분에 대해서는 참조 에 기재되어 있으므로, 꼭 읽어 주시면 이해가 깊어진다고 생각합니다!
    끝까지 읽어 주셔서 감사합니다 😊

    참고 기사



    Messaging API 개요

    htps : // 코 m / 에노모토 아키라 / ms / 64bf4
    htps : // 있을까 y 아니오 s. 이 m /가 s / ぃね !

    좋은 웹페이지 즐겨찾기