はじめに
kintoneでレコードに対してコメントをすると、kintone上では通知が来ます。コメント内容をslackの特定チャンネルに通知する方法を試しました。
どのような背景があって作成したのか?
コミュニケーションツールにはslack、CRMにはkintoneを使用しています。
kintoneレコードのコメントに投稿される内容に意外と重要なものが多く、これまではコメントをした人しか内容を把握しておらず他メンバーは検知にムラがありました。情報格差が起きないよう、チームメンバーが見ることのできるslackチャンネルに通知し即確認できるようにしました。
コード
kintoneに設定しているscriptです。どなたかの参考になれば。。。🙇♂
素人が書いているscriptなので書き方がイマイチな箇所があると思いますが、何かあればコメントいただけますと幸いです。
(function() {
'use strict';
var triggerEvents = [
// レコード詳細画面を表示した後のイベント
"app.record.detail.show"
];
kintone.events.on(triggerEvents, function(event) {
// 書き込むボタンのクリックイベント
document.querySelector("button.ocean-ui-comments-commentform-submit").onclick = function(){
// コメント投稿者を取得
var commentUser = kintone.getLoginUser();
// kintoneレコードのURLを取得
var thisUrl = "https://graffer.cybozu.com/k/" + kintone.app.getId() + "/show#record=" + kintone.app.record.getId();
var webhookUrl = "";
var payload;
// コメント内容を取得
var commentValue = document.querySelector(".ocean-editor-seamless").textContent;
//コメントが入力されている場合
if(commentValue !== ""){
// テキストを生成
payload = {
"text": "レコード「<" + thisUrl + "|" + event.record.customerName.value + ">」" + "に、" + commentUser.name + " から以下のコメントが投稿されました!\n"
+ "```" + commentValue + "```"
};
return new kintone.Promise(function(resolve, reject) {
kintone.proxy(webhookUrl, "POST", {}, payload, function(body, status, headers) {
console.log(status, body);
resolve(event);
});
});
}
return event;
};
});
})();
説明
document.querySelector("button.ocean-ui-comments-commentform-submit").onclick
コメントが書き込まれた際のイベントをトリガーの一要素にしています。
kintone.getLoginUser(); ⇒ 投稿者のユーザー名
document.querySelector(".ocean-editor-seamless").textContent ⇒ コメント内容
を取得して通知することでslack内で完結するようにしています。