我正在Google Dialogflow中开发聊天机器人以寻求Google的帮助,我已经遵循了Documentation for showing Push notifications。我已经申请了许可,但是现在我陷入了该文档的最后一步(Exchange the key for an access token and send a notification
)。
任何人都可以帮助我做到这一点。我应该从Python履行代码发送哪个JSON响应?
答案 0 :(得分:3)
最后,我已经解决了问题。 @matthewayne发布的代码有一些错误,例如它应该是“ POST”请求,并更改了一些有效负载和标头参数,因此它起作用了!在这里,我更改了一些代码并尝试请求,并命中了通知! >
我已经推荐了this documentation to make it worked!
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)
答案 1 :(得分:1)
尝试一下:
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>',
},
'target': {
'userId': '<USER_ID>',
'intent': '<INTENT>',
# Expects a IETF BCP-47 language code (i.e. en-US)
'locale': '<LOCALE>'
},
}
}
r = requests.get('https://actions.googleapis.com/v2/conversations:send', json=payload, headers=headers)
print(str(r.status_code) + ': ' + r.text)