slack api에서 메시지 보내기 이벤트 확인 ~ integromat
4734 단어 슬랙integromatslack-api
소개
응답하는 bot를 slack과 integromat를 제휴해 작성해, 겨우 의문이 남는 곳이 해소되었으므로, 정리했습니다.
포인트는
입니다.
메시지를 보낼 때 EventAPI 발생
인증시의 EventAPI에 대해서는, 여기 에 기재했습니다.
유저의 메세지 송신 이외에 bot로부터의 메세지 송신에 대해서도 EventAPI가 송신됩니다.
사용자가 slack에서 메시지를 보낼 때의 흐름
Webhook 내용
일부 요소는 가려져 있습니다.
사용하는 파라미터는
event.type
event.text
event.user
event.channel
webhook에 대한 응답은 3초 이내에
Webhook에 대한 요청은 bot도 사용자처럼 전송됩니다.
둘 다 응답에 상태 200을 반환하고 EventAPI로 3초 이내에 반환합니다.
이후의 처리는 bot의 userid를 취득해 필터의 대상으로 합니다.
다만, 실제로 짜낸 이 시나리오에서는 3초 이내에 리턴할 수 없는 것이 그대로 있었습니다.
취득한 text로부터 데이터를 취득
매우 적당한 테스트 데이터입니다.
data store에서 가져올 때도 다른 리소스에서 얻는 방법은 여러 가지가 있기 때문에
참고 정도로.
Bundle별로 취득한 데이터를 하나의 Bundle의 Array에
Array를 필터링하여 요소를 검색합니다.
메시지 보내기
channel에는 event.channel을 사용합니다.
메시지를 보내려면 im.open에서 채널을 열어야 하지만 bot 앱의 메시지 입력란에는 처음부터 열려 있습니다.
bot에서 메시지를 보낸 후의 흐름
요청을 받고 응답을 반환하는 것만을 적절하게 응답하면
반복 bot 메시지가 전송되는 루프로 들어갑니다.
오류로 판단되는 조건 확인
여기를 확인하십시오.
htps : // 아피. scck. 코 m / 에ぇ ぇ ぇ ぇ ぇ ょ ゔ ぇ ts ゜ ゜ ぃ え ゜ ㅇ ㅇ s
Router에서 Webhook의 응답과 텍스트 검색을 병렬로 했을 때 반복적으로 보낸 메시지가 표시되므로 직렬로 수정했습니다.
Virify 즈미의 Webhook에 3초 규칙하지 않으면 최대 3회 메시지가 던집니다.
헤더에 이유와 실시 횟수를 곱하여 전송되어 오므로, 메시지가 반복되면 필요 체크입니다.
재시도 요청을 받은 후 흐름
상태 코드에
502
, header에 X-slack-No-Retry
마지막으로
integromat에서 slack을 다루는 경우, 모듈이 준비되어 있기 때문에 대체로 그쪽을 사용하면 지장은 없을까 생각합니다. workspace에 integromat 앱을 추가하는 부분이 기피 요소였습니다.
시나리오라면 API 레벨에서 무엇을 하고 있는지 알기 위해서는 서버도 필요없고, 에러 대응도 독자적으로 짜는 것이 좋은 곳이라고 생각합니다.
좋지 않은 곳에서는 Webhook 초기화에 1 초 가까이 걸리는 경우도 확인하고,
사용하는 모듈이 늘어나면 모든 것을 초기화하는 시간이 Webhook의 응답을 지연시켰다.
Reference
이 문제에 관하여(slack api에서 메시지 보내기 이벤트 확인 ~ integromat), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nofrmm/items/cfe8857c8ddd53cf93f4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(slack api에서 메시지 보내기 이벤트 확인 ~ integromat), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nofrmm/items/cfe8857c8ddd53cf93f4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)