1分後に会話終了の通知がくるチャットボットを作成したい
解決したいこと
会話開始とLINEで送ると「会話を開始するよー」と返信が返ってきて、1分後したら「会話を終了するよー」と返信が返ってくるプログラムを作成したいが返信が返ってこない。なお1分間の間は自由に会話してもよい。
発生している問題・エラー
>会話開始
>>会話開始するよー
・
・
・
>>(会話終了がかえってこない)
### 該当するソースコード
GAS
var conversationStartTime;
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 chitchatResponse;
if (userMessage.includes("会話開始")) {
// ユーザーが「会話開始」と入力した場合、会話を開始
conversationStartTime = new Date().getTime();
replyLine(lineData.events[0].replyToken, "会話を開始するよー。");
} else {
// 通常の会話が可能な場合
chitchatResponse = generateChitchatResponse(userMessage);
// 1分経過したら会話を終了
if (conversationStartTime && new Date().getTime() - conversationStartTime >= 1 * 60 * 1000) {
replyLine(lineData.events[0].replyToken, "会話を終了するよー。");
conversationStartTime = null; // 会話開始時刻をリセット
return;
}
}
// 通常の会話応答
if (chitchatResponse) {
replyLine(lineData.events[0].replyToken, chitchatResponse);
}
} catch (error) {
Logger.log('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": "*******"
};
var data = {
"replyToken": replyToken,
"messages": [
{
"type": "text",
"text": replyMessage
}
]
};
var options = {
"method": "post",
"headers": headers,
"payload": JSON.stringify(data)
};
UrlFetchApp.fetch(url, options);
}
function generateChitchatResponse(userMessage) {
var url = "https://api.rinna.co.jp/models/chitchat-generation";
var headers = {
"Content-Type": "application/json",
"Ocp-Apim-Subscription-Key": "*****"
c" // ご自身のRinna APIのサブスクリプションキーに置き換えてください
};
var dialogHistory = [
"おはよう",
"朝からおはようございます!",
"元気ですか?",
"元気です!笑",
userMessage
];
var data = {
"dialogHistory": dialogHistory
};
var options = {
"method": "post",
"headers": headers,
"payload": JSON.stringify(data),
"muteHttpExceptions": true
};
var response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() == 200) {
var responseData = JSON.parse(response.getContentText());
return responseData.response;
} else {
console.error("Error " + response.getResponseCode() + ": " + response.getContentText());
return "エラーが発生しました。";
}
}
0 likes