@ibarakitarou123456

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

LINE Bot + Rinna API 連携したがLINEの返信がこない

解決したいこと

LINE Bot + Rinna API 連携しましたがLINEの返信がこないので返信できるようにしたいです。

LINE botとRinna APIで雑談できるようなチャットボットを作成しようと考えています。

該当するソースコード

ソースコードを入力

// LINE Bot + Rinna API 連携の Google Apps Script Code

function doPost(e) {
  try {
    var lineData = JSON.parse(e.postData.contents);
    var userMessage = lineData.events[0].message.text;

    // LINEからのメッセージをログに出力
    Logger.log('LINE Message Received:', JSON.stringify(lineData));

    // りんな へのリクエストと LINE への応答
    var makeCCEResponse = makeCCERequest(userMessage);
    replyToLINE(lineData.events[0].replyToken, makeCCEResponse);

  } catch (error) {
    Logger.log('Error in doPost:', error.message);
    console.log(error.message);  
  }
}

function replyLine(replyToken, replyMessage) {
  var url = "https://api.line.me/v2/bot/message/reply";
  var headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer ********"
  };

  var data = {
    "replyToken": replyToken,
    "messages": [
      {
        "type": "text",
        "text": replyMessage
      }
    ]
  };

  var options = {
    "method": "post",
    "headers": headers,
    "payload": JSON.stringify(data)
  };

  UrlFetchApp.fetch(url, options);
}

function makeCCERequest(rawInput, outputLength = 25) {
  var url = "https://api.rinna.co.jp/models/cce";
  var headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "**********" // 主キーを使用しています
  };

  var data = {
    "rawInput": "rawInput",
    "outputLength": "outputLength"
  };

  var options = {
    "method": "post",
    "headers": headers,
    "payload": JSON.stringify(data),
    "muteHttpExceptions": true 
  };

  var response = UrlFetchApp.fetch(url, options);

  if (response.getResponseCode() == 200) {
    return JSON.parse(response.getContentText());
  } else {
    console.error("Error " + response.getResponseCode() + ": " + response.getContentText());
    return null;
  }
}





0 likes

2Answer

makeCCERequest 関数の9行目以降、rawInput と outputLengthプロパティのダブルクォーテーションを外してみてはどうでしょうか。

function makeCCERequest(rawInput, outputLength = 25) {
  var url = "https://api.rinna.co.jp/models/cce";
  var headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "**********" // 主キーを使用しています
  };

  var data = {
//    "rawInput": "rawInput",
//    "outputLength": "outputLength"
    "rawInput": rawInput,
    "outputLength": outputLength

  };

  var options = {
    "method": "post",
    "headers": headers,
    "payload": JSON.stringify(data),
    "muteHttpExceptions": true 
  };
1Like

Comments

  1. 返信ありがとうございます、 "rawInput": rawInput,"outputLength": outputLengthに変更しましたが返信が返ってきません

  2. ただ「返信が返ってきません」とだけ言われても、何も知らない他人は超能力者ではないので、状況を把握できません。

    以下を確認してください。

    ・GASのエディタの「実行数」の画面で、何かエラーは出ていませんか?エラーが出ている場合は省略せず、その内容を記載してください。

    ・GAS エディタ側での保存、デプロイのやり直しを行いましたか?

    デプロイの際「次のユーザーとして実行:自分、アクセスできるユーザー:全員」にしてデプロイしていますか?

    デプロイURLが変わった場合、LINE DevelopersでのwebhookのURL設定をし直し、それが正しく通っていることを確認する必要がありますが、ちゃんとしましたか?

    ・LINE Mesaging APIとrinna APIいずれか一方に問題が生じている可能性があり、それを切り分ける必要があります。(たとえば、rinnaのAPIキーやLINEのチャンネルトークンのどちらか一方が間違っている、等)

    rinna APIだけを使ったプログラム、LINE Mesaging APIだけを使ったプログラムいずれか一方だけにして実行してみて、どちらも問題なく動作することは確認されましたか?

以下エラーになっていると思われる箇所です。

  • makeCCERequest 関数の9行目以降、rawInput と outputLengthプロパティが文字列になっているのでダブルクォーテーションを外す(前述)

  • doPost関数の8行目:関数名の呼び出しが間違っている(replyLine関数を「replyToLINE」と言う名前で呼び出そうとしている)

  • doPost関数の8行目:りんなAPIからうけとったオブジェクト(makeCCEResponse)をそのままLINE Messaging APIに渡している。ここは文字列を渡さないといけないので、makeCCEResponse.answerを渡すべき。

以上を修正したコードが下記です。

(修正後、GASエディタ上での保存、GASのデプロイのやり直し、LINE DevelopersコンソールでのWebhookのURL設定の見直し等もきちんと行ってください)

// LINE Bot + Rinna API 連携の Google Apps Script Code

function doPost(e) {
  try {
    var lineData = JSON.parse(e.postData.contents);
    var userMessage = lineData.events[0].message.text;

    // LINEからのメッセージをログに出力
    Logger.log('LINE Message Received:', JSON.stringify(lineData));

    // りんな へのリクエストと LINE への応答
    var makeCCEResponse = makeCCERequest(userMessage);
    replyLine(lineData.events[0].replyToken, makeCCEResponse.answer);  // 修正

  } catch (error) {
    Logger.log('Error in doPost:', error.message);
    console.log(error.message);  
  }
}

function replyLine(replyToken, replyMessage) {
  var url = "https://api.line.me/v2/bot/message/reply";
  var headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer ********"
  };

  var data = {
    "replyToken": replyToken,
    "messages": [
      {
        "type": "text",
        "text": replyMessage
      }
    ]
  };

  var options = {
    "method": "post",
    "headers": headers,
    "payload": JSON.stringify(data)
  };

  UrlFetchApp.fetch(url, options);
}

function makeCCERequest(rawInput, outputLength = 25) {
  var url = "https://api.rinna.co.jp/models/cce";
  var headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "**********" // 主キーを使用しています
  };

  var data = {
    "rawInput": rawInput,                // 修正
    "outputLength": outputLength         // 修正
  };

  var options = {
    "method": "post",
    "headers": headers,
    "payload": JSON.stringify(data),
    "muteHttpExceptions": true 
  };

  var response = UrlFetchApp.fetch(url, options);

  if (response.getResponseCode() == 200) {
    return JSON.parse(response.getContentText());
  } else {
    console.error("Error " + response.getResponseCode() + ": " + response.getContentText());
    return null;
  }
}
0Like

Comments

  1. 返信返ってきました!!ありがとうございます!!

Your answer might help someone💌