チャットからプロジェクトステータスを取得する
chat オブジェクトの fetchProjectStatus メソッドを使うことで、「配信先エンドユーザーにオペレーターがアサインされているか」、「全オペレーターの何割が、まだアサインを受け付けることができるか」などの情報を Widget のスクリプト内で取得することができます。
以下のようなオブジェクトを取得することができます。
{
"online_operator": { // オンラインオペレーターの中の誰か1人の情報
"is_bot": false,
"profile_image_src": "https://img-karte-io.s3.amazonaws.com/image/59687257491890198f03416c::karte.jpg",
"profile_name": "KARTEちゃん"
},
"assigned": true, // 配信先ユーザーのアサイン状況
"assigned_operator": { // 配信先ユーザーの担当者情報
"is_bot": false,
"profile_image_src": "https://img-karte-io.s3.amazonaws.com/image/59687257491890198f03416c::karte.jpg",
"profile_name": "KARTEちゃん"
},
"operator_counts": {
"all": 42, // 全体オペレーター数
"online": 23, // オンラインオペレーター数
"available": 7 // アサイン可能オペレーター数
}
}
記述例1(オンラインオペレーターの数に応じて、新規ユーザーへのチャット表示を変更する)
スクリプト内で chat.open() している部分を、以下に書き換えます。
chat.fetchProjectStatus(function(err, status) {
if (err || !status) {
return;
}
if (status.operator_counts.online > 0) {
chat.open();
}
});
記述例2(全オペレーターがアサイン上限までアサインされていたら、新規ユーザーにはチャットを出さない)
スクリプト内で chat.open() している部分を、以下に書き換えます。
chat.fetchProjectStatus(function(err, status) {
if (err || !status) {
return;
}
if (status.assigned // すでにアサインされているユーザーの場合
|| status.operator_counts.available > 0 // アサイン可能オペレーターが1人以上存在する
) {
chat.open();
}
});
記述例3(オンラインオペレータの8割がアサイン上限までアサインされていたら、その結果に応じてヘッダーの説明文を切り替える)
スクリプト内で chat.option()やchat.open() している部分を、以下に書き換えます。
var header_description = "ご質問があればお尋ねください。KARTEサポート担当者につながります。";
chat.fetchProjectStatus(function(err, status) {
if (err || !status) return initChat();
// 未アサイン、かつアサイン可能オペレーターがオンラインオペレーターの2割未満
if (!status.assigned && status.operator_counts.available / status.operator_counts.online < 0.2) {
// ヘッダー文言を変更
header_description = "ただいま混雑しています。回答時間が遅れる可能性がありますので、予めご了承ください。";
}
initChat();
});
function initChat() {
chat.option({
header_description: header_description,
// その他のオプションを設定
});
chat.open();
}
Updated 12 months ago