line bot에서 숫자를 이모티콘으로 표시하고 싶습니다.

소개



line bot상에서 표시하는 숫자를, 이모티콘의 숫자로 표시시켜 보려고 생각 구현.
bot내에서 숫자를 표시하고 싶을 때에 사용할 수 있다고 생각 비망록 메모.
동작 이미지는 이런 느낌입니다, 개행의 문자수 카운트의 거동을 보기 위해(때문에), 한 자리수 때는 감히 개행하도록(듯이) 하고 있습니다.


비망록



기본적인 작법



Visual Studio Code로 구현하고 ngrok에서 터널링하여 실행.
이 부분은 line bot와 상호 작용하는 기본적인 코드입니다.

'use strict';

const express = require('express');
const line = require('@line/bot-sdk');
const PORT = process.env.PORT || 3000;

const config = {
    channelSecret: 'チャンネルシークレット',
    channelAccessToken: 'アクセストークン'
};

const app = express();

app.get('/', (req, res) => res.send('Hello LINE BOT!(GET)')); //ブラウザ確認用(無くても問題ない)
app.post('/webhook', line.middleware(config), (req, res) => {
    console.log(req.body.events);

    //ここのif分はdeveloper consoleの"接続確認"用なので削除して問題ない。
    if(req.body.events[0].replyToken === '00000000000000000000000000000000' && req.body.events[1].replyToken === 'ffffffffffffffffffffffffffffffff'){
        res.send('Hello LINE BOT!(POST)');
        console.log('疎通確認用');
        return; 
    }

    Promise
      .all(req.body.events.map(handleEvent))
      .then((result) => res.json(result));
});

const client = new line.Client(config);

async function handleEvent(event) {
  //ここに色々書く
}

숫자를 이모티콘으로 변환



여기가 이번 중요한 부분.
숫자를 인수로 사용하여 이모티콘을 반환하는 make_emoji_num 함수를 구현합니다.
index는 text의 왼쪽에서 몇 문자째의 $를 옮겨놓는지의 번호로, 개행을 의미하는 "\n"은 1문자 판정인 것 같다.
async function handleEvent(event) {
  if (event.type !== 'message' || event.message.type !== 'text') {
    return Promise.resolve(null);
  }

  var reply_dic = make_reply(event.message.text)
  return client.replyMessage(event.replyToken, reply_dic);
}

app.listen(PORT);
console.log(`Server running at ${PORT}`);
![Screenshot_20201105-163114.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666990/8cfc7cb2-3307-35dc-7445-579476e7f81c.png)

function make_reply(num){
  var reply_dic= {
        "type": "text",
  }

  var product_id = "5ac21b4f031a6752fb806d59"
  var emojiID_list = ["062","053","054","055","056","057","058","059","060","061"];
  var junokurai = Math.floor(num / 10);
  var ichinokurai = num % 10;
  var emoji_list = [];

  if (num >= 10){
    reply_dic["text"] = "$$"

    emoji_list.push(
      {
        "index": 0,
        "productId": product_id,
        "emojiId": emojiID_list[junokurai]  
      }
    )
    emoji_list.push(
      {
        "index": 1,
        "productId": product_id,
        "emojiId": emojiID_list[ichinokurai]  
      }
    )
    reply_dic["emojis"] = emoji_list;
    console.log(reply_dic);
  }else if (num < 10){
    reply_dic["text"] = "\n$"

    emoji_list.push(
      {
        "index": 1,
        "productId": product_id,
        "emojiId": emojiID_list[ichinokurai]  
      }
    )
    reply_dic["emojis"] = emoji_list;
  }

  reply_dic.text += "テスト"
  return reply_dic;

}


기타 편리한 자료들



・좋은 line bot를 만들기 위한 자신의 메모
htps : // m / kan / ms / b71c3d7 308cb8337 a1

・line bot 이모티콘 ID 리스트
htps : // d.ぃね-scd응. 네 t/r/로 v선하고 r/센다 bぇ_ぃね_에모지_ぃst. pdf

・Text를 보내는 경우의 API 레퍼런스
htps : //에서 ゔぇぺぺrs. 네. 비 · 엔 / 레후 렌세 / 메사 긴 g 아피 / # 테 xt 메사게

좋은 웹페이지 즐겨찾기