Slack의 emoji를 스탬프풍에 사용할 수 있는 bot

소개



Slack에는 왠지 스탬프 기능이 없다고 하는 것이므로, 간이적으로입니다만 그것처럼 사용할 수 있는 Bot를 작성해 보기로 했습니다.
외부에 이미지를 준비해도 좋지만 모처럼이므로 이번에는 Slack API를 사용하여 custom emoji의 원래 크기를 표시하는 방법을 취하기로 합니다.

본문



실제 동작




  • Bot 호출은 icon emojiの登録名 에서 수행
  • 특수 설정은 필요하지 않으며 emoji 등록 후 즉시 사용할 수 있습니다
  • 이미지의 최대 크기는 128*128

  • 개발 환경


  • Bot 개발: GAS
  • 사용 API Slack API emoji.list

  • 준비



    1. GAS



    GAS로 Slack Bot을 만들 때 다음 사이트를 참고했습니다.
    Slack과 GAS의 연계 등에 대해서는 이 페이지에서는 특별히 설명하지 않습니다.

    초보자가 GAS로 Slack Bot을 만들려고
    htps // ch. 또는 mph. 네 t / s ぁ 쿠 보 t ぃ th - s /

    Outgoing WebHooks 설정은 이런 느낌





    2. emoji.list



    emoji.list 로 이동하여 테스터 탭을 엽니다.



    1.에서 Slack API Token을 받고 있다면 token의 선택 상자에 표시되어야하므로 Test Method를 클릭하십시오.



    token에 문제가 없으면 URL과 custom emoji 목록이 표시됩니다.
    URL은 나중에 사용하므로 삼가 해주십시오.



    개발



    emoji 목록 얻기


    function getEmojiList() {
      //APIのURL
      var url = "hoge";
      //JSONで取得してからパース
      var response = UrlFetchApp.fetch(url);  
      var content = response.getContentText("UTF-8");
      var return_data = JSON.parse(content);
    
      //emojiのリストのみ返す
      return return_data['emoji'];
    }
    

    url을 방금 사용한 emoji.list URL로 바꿉니다.
    이제 slack에 저장된 custom emoji의 이름과 url의 배열을 얻을 수 있습니다.

    emoji URL



    emoji 이름 텍스트의 emoji URL을 반환합니다.
    function getEmojiURL(text){
      var return_message = "error";
      //emojiリストの取得
      var emoji_list = getEmojiList();
      //リストからtextのURLを取得
      //textから空白を削除している
      return_message = emoji_list[text.trim()];
    
      return return_message;
    }
    

    Bot 부분 만들기


    var token = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN');
    
    function doPost(e) {
    
      var bot_name = "icon";
      var bot_icon = "";
    
      var app = SlackApp.create(token);
    
      var message = "";
    
      //slackで投稿された文章から4文字目より後ろを取得
      //今回はicon 絵文字の登録名 で呼び出しているため 
      var text=e.parameter.text.substr(4);
    
      message = "no icon";
      if(text!=""){
        message = getEmojiURL(text);
      }
    
      //chatPostMessageでチャットとして投稿
      //呼び出されたチャンネルに投稿する
      return app.postMessage(e.parameter.channel_id, message, {
        username: bot_name,
        icon_url: bot_icon
      });
    }
    

    이상으로 완성됩니다.

    결론



    처음의 투고 때문에 여러가지 잡는 곳은 있다고 생각합니다만, 참고로 받을 수 있는 것이 있으면 다행입니다.

    좋은 웹페이지 즐겨찾기