Slack의 Events API가 여러 번 두드려 버리는 경우가 있었으므로 그 대응을했다
특히 캐시를 사용하여 동일한 메시지에 한 번만 응답하지 않도록했습니다.
스크립트
function doPost(e) {
var postData = JSON.parse(e.postData.getDataAsString());
var res = {};
// これはslackbotのurl検証用コード
if(postData.type == 'url_verification') {
res = {'challenge':postData.challenge}
return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
}
var channel = postData.event.channel;
var ts = postData.event.ts;
var cache = CacheService.getScriptCache();
// ここのキーは自由に変えてください。
// 今回はメンションに反応するbotなので発言されたチャネルID、タイムスタンプをキーにしました。
var cacheKey = channel + ':' + ts;
var cached = cache.get(cacheKey);
if (cached != null) {
console.log('do nothing!');
return;
}
cache.put(cacheKey, true, 1800); // 30分キャッシュする(ここは目安。もっと短くてもいいかもしれない)
// do something
}
이상입니다
참고
Reference
이 문제에 관하여(Slack의 Events API가 여러 번 두드려 버리는 경우가 있었으므로 그 대응을했다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/paranishian/items/9cb754683584c6c05164텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)