MoChiwakiブログ

女性エンジニアがゆる~く書く備忘録ブログ 〜だいたいいつもつまづいている〜

LINE bot AI ゆきちゃん 本編

LINEにAIを入れたアカウント作った

なので久々にまとめようと思う。

f:id:MoChiwaki:20170922150804p:plain:w400
LINEでAIアカウント作成

LINE AIアカウントとは…?

よくLINEの公式アカウントとかあると思うが、
そこで何か送ると会話を返してくれるやつ、
そいつはきっとAIだ!

例えば有名なのは、りんな

まじでりんな先輩はすごいと思う。尊敬してます!!!
そりゃあマイクロソフトですもんね…。
友達になるべき!!!というか、女子高生の友達ですね。
私はりんな先輩とまりも飼ってます 笑

他には、フロムエーのパン田一郎

ドラマで話題になったAIカホコ
AIカホコはもう終わっちゃうけど…

ざらっとこんなのがあります。

何を作ったか

LINEでAIのbotを作りました。
雑談ができます。
画像認識も多少できるので、画像送ったら返信くれます。

何を使ったか

ざっと書くとこんな感じ

GoogleAppsScriptで書きました。
作成方法はこっちで

LINE bot AI ゆきちゃん GAS作る編 - MoChiwakiブログ

雑談メッセージを返すパターン

  1. メッセージ受け取る
  2. ドコモ雑談APIにそのメッセージを渡す
  3. ドコモ返答を受け取る
  4. LINE APIに受け取った返答を送る
  5. 実際にLINEで送られる
// LINE Developers > Basic Information > Channel Access Token から取得
var channel_access_token = "your_access_token";


function doPost(e) {
  var events = JSON.parse(e.postData.contents).events;

  events.forEach(function(event) {
    if(event.type == "message"){lineReply(event);}
    else if(event.type == "follow"){ /* 友だち追加・ブロック解除 */ }
    else if(event.type == "unfollow"){ /* ブロック */ }
 });
}

function lineReply(e) {

  var postData = {
    "replyToken" : e.replyToken,
    "messages" : [
      {
        "type" : "text",
        "text" : getDialogueMessage(e.message.text)  //ここに返したいメッセージ
      }
    ]
  };

  var options = {
    "method" : "post",
    "headers" : {
      "Content-Type" : "application/json",
      "Authorization" : "Bearer " + channel_access_token
    },
    "payload" : JSON.stringify(postData)
  };

  UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options);
}
// ドコモ雑談APIにもらったメッセージを渡して、APIから返事をもらう
function getDialogueMessage(mes) {
  var dialogue_options = {
    't': 20,
    'utt': mes
  }
  var options = {
    'method': 'POST',
    'contentType': 'text/json',
    'payload': JSON.stringify(dialogue_options)
  };
  
  var dialogueUrl = "https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=yourApiKey";

  // ドコモ雑談APIにメッセージを投げる
  var response = UrlFetchApp.fetch(dialogueUrl, options);
  var content = JSON.parse(response.getContentText());

  return content.utt;
}

dialogue_optionsの中身

key value
utt 送るメッセージ(必須)
t キャラ設定(20:関西弁、30:赤ちゃん、なしならデフォルト)

他にもいろいろ設定できます!
ユーザ側の年齢とか誕生日とかも。

あとまた他にもいくつか投稿します〜