お問い合わせアプリを作成しており、ステータスが変更されると選択されたカテゴリーの担当者へメンション付きでSlackのプライベートチャンネルへ通知が届くようにScriptを設定しました。
PC/スマホ用どちらにも同じScriptを登録しましたが、PCからステータスを変更するとSlackへ通知が届きますが、スマホで変更するとステータスは変わるものの通知が届かず困っています。
同じお問い合わせアプリで別のScriptを設定を設定してみましたが、同じくPCからの変更時は通知は届き、スマホからの変更では通知が届きませんでした。
また以前社内の別の方が、他のアプリで同じようにスマホから登録した際にSlackへの通知が届くようScriptを登録してみたようですが、Slackへの通知が届かなかったとのことです。
そのため、コード以外に問題があるのではと思い自分でも原因を調べてみましたが、原因が分かりませんでした。
どうしたら実行できるのかご教示いただきたいです。
(function () {
"use strict";
const SLACK_WEBHOOK_URL = 'https://hooks.slack.com/........BCScc';
const MENTION_MAP = {
'オフィス・備品・消耗品': ['メンバーID', 'メンバーID'],
'勤怠': ['メンバーID', 'メンバーID', 'メンバーID'],
'kintone': ['メンバーID', 'メンバーID']
};
function sendSlackNotification(e) {
const record = e.record;
const appId = e.appId;
const recordId = record.$id.value;
const questioner = record["situmonsya"].value;
const disclosureCategory = record["kaizikubun"].value;
const category = record["category"].value;
const desiredCompletionDate = record["kiboubizi"].value;
const idList = MENTION_MAP[category] || MENTION_MAP['その他'];
const mentionString = idList.map(id =>
id.startsWith('S') ? `<!subteam^${id}>` : `<@${id}>`
).join(' ');
const kintoneRecordUrl = 'https://' + location.hostname + '/k/' + appId + '/show#record=' + recordId;
const slackMessageText =
`:new_2: 新しいお問い合わせが届きました。\n` +
`【質問者】${questioner}\n` +
`【開示区分】${disclosureCategory}\n` +
`【カテゴリー】${category}\n` +
`【希望完了日時】${desiredCompletionDate}\n` +
`【確認依頼】${mentionString}\n` +
`【レコード】${kintoneRecordUrl}`;
const messagePayload = { text: slackMessageText };
return new kintone.Promise(function (resolve, reject) {
kintone.proxy(SLACK_WEBHOOK_URL, 'POST', { 'timeout': 30000 }, messagePayload, function (body, status) {
console.log('Slack通知結果 - Status:', status, 'Body:', body);
if (status !== 200) {
reject(new Error('ステータスコード: ' + status + ', メッセージ: ' + body));
} else {
resolve(e);
}
});
});
}
// ステータスが「受付処理中」に変更されたときのみSlack通知
kintone.events.on("app.record.detail.process.proceed", function (e) {
const nextStatus = e.nextStatus.value;
if (nextStatus === '受付処理中') {
return sendSlackNotification(e).catch(function (error) {
alert('Slack通知に失敗しました:' + error.message);
throw error;
});
}
return e;
});
})();