lambda + kintone으로 chatwork에 메시지 만 보낼 수 있도록 로그를 남겨 둡니다.
2475 단어 Chatwork금과람다APIGateway
안녕하세요, id:thashimoto입니다.
사내 공통으로 사용할 수 있는 메세지 통지용의 bot를 chatwork로 설정하려고 했습니다만
chatwork에서는 계정별로 API 토큰이 발급되기 때문에
API 토큰을 사내에서 공개하면 bot 계정이 포함된 대화방 정보에
액세스가 되어 버리므로, 그것을 회피하기 위해서 아래와 같은 요건으로 설정했을 때의 로그가 됩니다.
설정중, 걸린 곳 등을 쓰고 싶습니다.
구성
APIGateway
이번에는 메시지 알림만 할 수 있으면 좋았기 때문에 APIGateway의 API 키를 사용하여 인증 대응을 실시했습니다.
# Content-Type : application/json
{
"room_id" : $input.json('$.room_id'),
"body" : $input.json('$.body'),
"sourceIp" : "$context.identity.sourceIp"
}
option = "body="+str(event['body'])
room_id = str(event['room_id'])
sourceIp = str(event['sourceIp'])
람다
궁극적으로 pycurl을 사용할 수 있었기 때문에 다음과 같이 대응 (이번에는 파일 업을하지 않고 웹 페이지에서 설정했습니다)
import pycurl
# chatwork post
c = pycurl.Curl()
c.setopt(pycurl.URL, chatwork_url)
c.setopt(pycurl.HTTPHEADER, ['X-ChatWorkToken: '+CHATWORK_TOKEN+''])
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, post_text)
c.perform()
금과 소리
curl에서 실행
curl -H "Content-Type: application/json" -H "x-api-key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -X POST -d '{ "body": "body test","room_id": "1111111111111"}' "apigateway endpoint url"
감상
curl -H "Content-Type: application/json" -H "x-api-key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -X POST -d '{ "body": "body test","room_id": "1111111111111"}' "apigateway endpoint url"
데이터스토어 포함해, 서버리스적인 형태로 설정할 수 있어 운용도 그다지 수고가 들지 않기 때문에 편리해 보였습니다.
Reference
이 문제에 관하여(lambda + kintone으로 chatwork에 메시지 만 보낼 수 있도록 로그를 남겨 둡니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tirimen/items/1454142de18a329a1351텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)