INE Bot + Rinna API 連携の Google Apps Script Codeを作成
LINE Bot + Rinna API 連携の Google Apps Script Codeを作成しています。
以下のようなエラーが表示され実行することできません。
Google Apps Script Code
エラー
Exception: Request failed for https://api.rinna.co.jp returned code 401. Truncated server response: { "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an AP... (use muteHttpExceptions option to examine full response)
makeCCERequest @ コード.gs:71
LINE
ボットサーバーから200以外のHTTPステータスコードが返されました。(302 Found)
LINEプラットフォームから送信されたHTTP POSTリクエストに対してボットサーバーがステータスコード200を返すことを確認してください。詳しくは、Messaging APIリファレンスのレスポンスを参照してください。
Started on
11/29/2023
Primary key
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Show | Regenerate
Secondary key
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Primary keyとSecondary key入力してもエラーが表示されます。
以下がコードとなります。
// LINE Bot + Rinna API 連携の Google Apps Script Code
function doPost(e) {
var json = JSON.parse(e.postData.contents);
if (json.events) {
for (var i = 0; i < json.events.length; i++) {
var event = json.events[i];
if (event.type == "message" && event.message.type == "text") {
var user_input = event.message.text;
var rawInput = "A: " + user_input;
var cceResponse = makeCCERequest(rawInput);
if (cceResponse) {
var replyToken = event.replyToken;
var replyMessage = cceResponse.answer;
replyLine(replyToken, replyMessage);
}
}
}
}
return ContentService.createTextOutput();
}
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",
"subscription-key": "**********" // 主キーを使用しています
};
var data = {
"rawInput": rawInput,
"outputLength": outputLength
};
var options = {
"method": "post",
"headers": headers,
"payload": JSON.stringify(data)
};
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;
}
}