Google Cloud Pub/Sub에 가입하고 주제를 만들고 내 서버의 URL을 가리키는 webhook이 포함 된 구독을 만들었습니다. 그런 다음 Gmail API를 사용하여 Gmail 계정에서 만든 특정 라벨을보고 내가 작성한 주제와 연결했습니다.서버에 Google Pub/Sub webhook 호출 후 메시지 콘텐츠를 가져올 수 없습니다.
메시지가 내 Gmail 계정의 레이블에 도착하면 webhook에서 내 서버의 URL에 POST 요청을 실행합니다. data
필드가 Base64로 인코딩
{
"message": {
"attributes": {},
"data": "eyJlbWFpbEFkZHJlc3MiOiJteWVtYWlsQG15ZG9tYWluLmNvbSIsImhpc3RvcnlJZCI6MTIzNDU2N30K",
"messageId": "12345678900000", # only relevant to Pub/Sub
"message_id": "12345678900000",
"publishTime": "2017-04-16T15:42:08.968Z",
"publish_time": "2017-04-16T15:42:08.968Z"
},
"subscription": "projects/proj-name/subscriptions/sub-name"
}
,이 경우에 : : 그러나 상관없이 이메일의 내용이 무엇인지는 POST의 몸은 항상이 같은입니다
{"emailAddress":"[email protected]","historyId":1234567}
무엇을의 I 매번 전자 메일 내용이 무엇이든 상관 없습니다. 그러나 Google 개발자 콘솔에서 게시 테스트를 실행하면 data
필드의 base64 인코딩 값이 지정한 실제 메시지 문자열이됩니다.
data
값을 디코딩 base64로에서 historyId를 사용하여 Gmail이 API와 history.list하는 후속 통화를 시도했지만, 내가 돌아올 모든이 같은 반응이다
:
{"historyId": "1234567"}
방법입니다 나는 전자 메일 내용을 얻는다고 생각하니?
전송 된 요청이'metadata' /'minimal' ['format'] (https://developers.google.com/gmail/api/v1/reference/users/messages/get)를 사용하고있는 것처럼 보입니다. # 매개 변수)를 기본값으로 사용합니다. 나는 Google Pub/Sub에 많은 것을 파고 들지 않았지만 매개 변수가 누락 된 것일 수 있습니다. –
사실이라면 푸시 요청의 형식을 어떻게 지정해야하는지 궁금합니다. 'watch' 요청 자체는 그것에 대한 매개 변수를 제공하지 않으며, 콘솔로부터의 푸시 요청에 대한 설정을 보지 못합니다. – RTF