API를 사용하여 LINE WORKS BOT 등록

14300 단어 apiLINEWORKSbotNode.js
저도 그렇습니다만, BOT 를 등록할 때는 Developer Console 화면에서 하고 있다고 생각합니다.
하지만 "Console 화면에는 로그인하고 싶지 않지만, Bot를 등록할 권한은 주고 싶다"라든지 "유사한 (결코 같지 않다) Bot를 유저마다 등록하고 싶다"등의 희귀한 요구가 , 타마에 있습니다. (그래, 나에게는 있었어요 ^^)

그럴 때!
API를 사용하여 BOT 등록하면 요청을 실현시킬 수 있습니다 YO!

LINE WORKS API에서 BOT를 등록하려면



LINE WORKS BOT를 등록하려면 여러 API를 사용합니다.
API를 다음 순서로 사용하여 BOT를 등록한 후 지정된 사용자에게 메시지를 보냅니다.
  • 토크 Bot 테넌트 등록
  • 토크 Bot 도메인 등록
  • 메시지 수신 서버 추가
  • 토크 Bot에서 메시지 보내기

  • 실제 코드



    글쎄, 그럼 코드를 노출하고 싶습니다.
    이번에는 나중에 공부하기 위해 JavaScript로 작성하고 있습니다.
  • request 모듈을 사용하고 있으므로 npm install request 하고 설치해 둡니다.
  • api_id 등은, 자신의 Developer Console 를 확인해 값을 넣어 주세요.

  • registerBot.js
    
    const api_id = "api id";
    const consumer_key = "consumer key";
    const token = "server list token";
    const account_id = "[email protected]";
    const domain_id = 00000000;
    const callback_url = "https;//www.xyz.jp/callback";
    
    // トーク Bot のテナント登録
    const request = require('request');
    const uri_text = "https://apis.worksmobile.com/" + api_id;
    let options = {
        uri: uri_text + "/message/registerBot/v4",
        headers: {
            "Content-type": "application/json",
            "consumerKey": consumer_key,
            "Authorization": "Bearer " + token
        },
        json: {
            "name": "test bot",
            "photoUrl": "https://developers.worksmobile.com/favicon.png",
            "description": "defeat the promise process bot",
            "managerList": [account_id]
        }
    };
    request.post(options, (error, response, body) => {
        if(body.errorMessage) return;
        let botNo = body.botNo;
        // トーク Bot のドメイン登録
        options.uri = uri_text + "/message/registerBotDomain/v3"
        options.json = {
            "botNo": botNo,
            "domainId": domain_id,
            "usePublic": true,
            "usePermission": false
        }
        request.post(options, (error, response, body) => {
            if(body.errorMessage) return;
            // メッセージ受信サーバー追加
            options.uri = uri_text + "/message/setCallback/v2";
            options.json = {
                "botNo": botNo,
                "callbackUrl": callback_url,
                "callbackEventList": ["text", "sticker", "image"]
            };
            request.post(options, (error, response, body) => {
                if(body.errorMessage) return;
                // トーク Bot からメッセージ送信
                options.uri =  uri_text + "/message/sendMessage/v2",
                options.json = {
                    "botNo": botNo,
                    "accountId": account_id,
                    "content": {"type":"text","text":"BOT 登録が完了しました(^ω^)"}
                };
                request.post(options, (error, response, body) => {
                    console.log(body);
                    if(body.errorMessage) return;
                    console.log("success");
                });
            });
        });
    });
    
    

    이것을 node registerBot.js로 실행하면 BOT가 등록됩니다!


    무사히 BOT 등록이 완료되었습니다(^ω^)

    이번 코드는・・・긴!



    네 번 API를 실행하기 때문에 알고 있었지만 길다!
    가급적 짧게 하려고 optionslet 하고 사용해 주거나 했는데, 역시 길다.
    게다가 requestCallback 를 4회나 하고 있으므로, 중첩이 깊다.

    여기에서 , Bot 이용 멤버 등록 API 를 사용해 유저를 한정시키거나 Bot을 포함한 대화방 만들기 API
    DB와 연결하여 botNo나 토크룸 ID를 DB에 등록하는 처리를 추가하면 더 중첩됩니다.

    한꺼번에 여러 가지를 하려고 하면 점점 계층이 깊고 깊게…
    머리가 아픈 이야기입니다! ( ゚Д゚)

    이번에는 Callback 함수로 코드를 작성했지만 Javascript에는 promise라는 객체가 있으며, 이것을 사용하면 계층을 얕고 보기 쉽게 할 수 있는 것 같습니다.
    Qiita에도 선배님의 기사가 많이 오르고 있으므로 꼭 읽어 보려고 생각합니다!

    결론



    여기까지 교제 해 주셔서 감사합니다.
    다음은 이 코드를 promise 를 사용한 기술로 계층을 얕고, 보기 쉽게 처리를 하고 싶습니다!
    『promise 사용할 수 없으면 JavaScript로 코드 쓸 수 있다고 말하지 말아요(웃음)』라고 말해져 눈물이 되었기 때문에가 아닌 데스요.
    네, 아니요. 매일 정진 있을 뿐입니다.
    · · · 최선을 다하겠습니다 (T T)
    더 가득 공부하지 않으면, 라고 느끼는 매일입니다.

    그럼 또! (^^)/

    참고하겠습니다 m(_ _)m



    LINE WORKS Developers

    좋은 웹페이지 즐겨찾기