간편! GoogleSpreadSheet을로드하고 배포하는 SkypeBot을 만드십시오!

기사 정보



Skype에서 상호 작용할 때 Q&A 봇 같은 것이 있다면 하나 하나 찾는 수고가 없어서 좋지 않을까 하는 것으로 작성해 보았습니다.

지금은 로컬로 움직이고 있을 뿐입니다만, 시간이 있으면, WindowsServer로 움직여 보고 싶은 곳입니다.
그러나 문제는 서버 요금. Bot을 움직이는 것만으로 매달 돈이 걸리는 것은 피하고 싶은 곳입니다.

필요한 것



· 파일 3개
· 스프레드 시트
· Bot용 스카이프 계정

운영 환경



Windows 32bit 버전 명령 프롬프트

절차



1.Bot용 스카이프 계정 만들기
이것에 대해서는 인터넷 전반에 걸쳐 방법이 쓰고 있다고 생각하므로 생략합니다.

2. 스프레드시트 만들기
이번에는 Bot가 Qiita와 인공 무능과 chatbot이라는 문자열에 반응하도록 만들고 있습니다.

A 열에서 어떤 행의 내용을 반환할지 판단하여 B 열에 Bot의 답변 내용을 기재하고 있습니다.



3. 스프레드시트 공개
csv로 게시하십시오. 또한 URL이 나올 것이라고 생각하므로 복사를 부탁드립니다.



4. 프로그램 작성

처음부터 만드는 것이 아니라, 참고가 되는 것이 있었으므로, 아래와 같은 링크의 것을 이용시키고 받았습니다.
링크처는 WebAPI를 사용하고 있습니다만, 이쪽은 GoogleSpreadSheet를 사용하도록 바꿉니다.

Skype 채팅에 자동 응답하는 자바스크립트를 쉽게 만들 수 있습니다.

변경하는 것은 다음과 같습니다.
autoreply.config.json
weather.js → question_answer.js로 이름 바꾸기

또한 autoreply.js는 수정없이 괜찮습니다.

autoreply.config.json
[
  {
    file: 'question_answer.js'
  }
]

question_answer.js
function(user, body){

  // XMLHttpRequestとは
  // http://gihyo.jp/dev/serial/01/crossbrowser-javascript/0012
  // XMLHttpRequest を使用出来るようにする為の宣言 下記はIE用
  var xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
  // スプレッドシートのURLを指定。末尾にcsvで公開されていることを示す =csv を付けること
  var uri = 'https://○○○=csv';
  xmlhttp.open('GET', uri, false);
  xmlhttp.send(null);
  if(xmlhttp.status != 200) return null;

  //配列の初期化
  var result = [];
  var lines = [];
  var params = [];

  // スプレッドシートの行ごとに分割
  lines = xmlhttp.responseText.split("\r\n");

  for (var i in lines) {

    //カンマ(セル)ごとに分割
    params = lines[i].split(",");

    //会話の相手がQiitaという文字を含んだ発言をした場合
    if(body.match(/Qiita/)){

        // スプレッドシートのA列にQiitaという文字列が存在する場合
        if (params[0].match("Qiita")){

            //デバッグ用に使うために残している
            //WScript.echo(params[1]);

            // Qiitaという文字列が存在した行のB列のセルの内容をBotの発言末尾に加える
            result.push(params[1]);
            break;
        }
    }

    if(body.match(/人工無脳/) || body.match(/chatbot/)){

        if (params[0].match("chatbot")){
            result.push(params[1]);
        }
    }

  }

    // 通信の状態 デバッグ用に使うために残している
//  result.push(xmlhttp.status);

    // 全文 デバッグ用に使うために残している
//  result.push(xmlhttp.responseText);

  return result.join('\n');
}

5. 파일 배포
아무 곳에나 세 개의 파일을 넣습니다.
이번에는 C 드라이브 아래에 폴더를 만들고 그 아래에 놓습니다.



6. 시작
명령 프롬프트를 열고 다음 명령을 실행합니다.
C:\Windows\SysWOW64\cmd.exe ←32bit版コマンドプロンプト
cd C:\skypebot ←ファイルがある場所に移動
dir /s/b ←ファイルがあるか確認
cscript autoreply.js  ←このコマンドを打つとスクリプトが起動します。無限ループしているので、止めるときはctr + C でお願いします。



7. 동작 확인
Bot용으로 만든 스카이프 계정에 Qiita라는 문자를 포함하여 전화해 봅시다.
반응하면 성공입니다!



이런 에러가 나오면・・・



Microsoft JScript 런타임 오류: 자동화 서버가 개체를 만들 수 없습니다.

32bit 버전 명령 프롬프트를 시작하는 것을 잊어버린 것 같습니다. 다음 명령을 발행하십시오.
C:\Windows\SysWOW64\cmd.exe

좋은 웹페이지 즐겨찾기