我想在我的Google Business Profile中添加新评论时收到通知。
根据文档,我已经设置了通知,但是当添加新的评论时,我什么也没有得到。
首先,我创建了一个Pub/Sub Topicprojects/my-project/topics/business-profile-notifications
。
然后,我创建了一个附加到前面创建的主题的推送订阅projects/my-project/subscriptions/business-profile-notifications-push
。我还定义了一个端点:https://my-endpoint/webhook
。这个端点正在监听POST
请求
最后,我将服务帐户mybusiness-api-pubsub@system.gserviceaccount.com
添加到IAM中,具有Pub/Sub admin角色。
在代码端,我在TypeScript Node.js服务器中使用NPMgoogleapis
客户端。
我正在更新帐户设置以设置通知:
const { data }: GaxiosResponse<mybusinessnotifications_v1.Schema$NotificationSetting> = await google.mybusinessnotifications({
version: 'v1',
auth,
}).accounts.updateNotificationSetting({
name: `accounts/${params.accountID}/notificationSetting`,
updateMask: 'notification_types',
requestBody: {
name: `accounts/${params.accountID}/notificationSetting`,
pubsubTopic: 'projects/my-project/topics/business-profile-notifications',
notificationTypes: [
'NEW_REVIEW',
'UPDATED_REVIEW',
],
},
});
此时,当添加新的审阅时,什么也没有发生。
当我通过curl命令curl -X POST -H "Content-Type: application/json" -i "https://my-endpoint/webhook"
在端点上发送POST请求时,请求被成功捕获。
另一方面,当我从配置的帐户获得通知设置时,我有通知类型,但没有任何订阅主题:
const { data }: GaxiosResponse<mybusinessnotifications_v1.Schema$NotificationSetting> = await google.mybusinessnotifications({
version: 'v1',
auth,
}).accounts.getNotificationSetting({
name: `accounts/${accountID}/notificationSetting`,
fields: 'pubsubTopic,notificationTypes',
});
反应:
{
"notificationTypes": [
"NEW_REVIEW",
"UPDATED_REVIEW"
]
}
我忘了做什么?
我自己解决了这个问题😁
在updateNotificationSetting
方法的文档中,是否声明"唯一可编辑的字段是notificationSetting"关于updateMask
字段。但这是错误的。我必须添加pubsubTopic
作为值。
最后,该方法的参数值为:
const opts = {
name: `accounts/${params.accountID}/notificationSetting`,
updateMask: 'notificationTypes,pubsubTopic',
requestBody: {
name: `accounts/${params.accountID}/notificationSetting`,
pubsubTopic: params.pubsubTopic,
notificationTypes: params.notificationTypes,
},
};
const { data }: GaxiosResponse<mybusinessnotifications_v1.Schema$NotificationSetting> = await google.mybusinessnotifications({
version: 'v1',
auth,
}).accounts.updateNotificationSetting(opts);