小编典典

如何在Python中通过Dialogflow实现从Google Assistant发送推送通知

python

我正在google
Dialogflow中开发chatbot以获得google的帮助,我已经按照此文档显示了推送通知。我已经请求了许可,但是现在我陷入了Exchange the key for an access token and send a notification该文档的最后一步()。

谁能帮我做到这一点。我应该从Python履行代码发送哪个JSON响应?


阅读 348

收藏
2021-01-20

共1个答案

小编典典

最后解决了问题。@matthewayne发布的代码有一些错误,例如,请求必须是“
POST”方法,并且需要更改有效负载和标头中的某些参数,因此它起作用了!在这里,我更改了一些代码并尝试请求和它打了一个通知!

我参考了此文档以使其起作用!

import io
import json

import requests
from google.oauth2 import service_account
import google.auth.transport.requests

PATH_TO_SERVICE_ACCOUNT = 'path/to/json/service/account'

REQUIRED_SCOPE = 'https://www.googleapis.com/auth/actions.fulfillment.conversation'

# Get access token
with io.open(PATH_TO_SERVICE_ACCOUNT, 'r', encoding='utf-8') as json_fi:
    credentials_info = json.load(json_fi)
credentials = service_account.Credentials.from_service_account_info(
    credentials_info, scopes=[REQUIRED_SCOPE])
request = google.auth.transport.requests.Request()
credentials.refresh(request)

headers = {
    'Authorization': 'Bearer ' + credentials.token
}

payload = {
    'customPushMessage': {
        'userNotification': {
            'title': 'Notification title',
            'text': 'Simple Text'
        },
        'target': {
            'userId': '<USER_ID>',
            'intent': '<INTENT>',
            # Expects a IETF BCP-47 language code (i.e. en-US)
            'locale': 'en-US'
        }
    }
}

r = requests.request("POST", 'https://actions.googleapis.com/v2/conversations:send', data=json.dumps(payload), headers=headers)

print(str(r.status_code) + ': ' + r.text)
2021-01-20