如何在Python中向actionsongoogle发送响应?

2024-10-01 09:38:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在对谷歌助手采取行动。通过使用Flask在Python中建立webhook,我能够接收JSON格式的请求。但我不知道如何将回复发送回助理。 enter image description hereenter image description here

import os, sys
from flask import Flask, request, send_from_directory, make_response
from googleactions import AppRequest, AppResponse, SimpleResponse

class operation():

    def justPrint(self):
        print("Hi dear user")
        print(AppResponse('告訴我故事發生什麼事吧').json())

app = Flask(__name__)

@app.route('/', methods=['GET'])
def verify():
    return "hello world"

@app.route('/', methods=['POST'])
def webhook():
    req = request.get_json()

    print(req)
    op = operation()
    getattr(op, req['handler']['name'])()
    return 'ok', 200

if __name__ == "__main__":
    app.run(debug=True, port=8080)

Tags: namefromimageimportappflaskhererequest
1条回答
网友
1楼 · 发布于 2024-10-01 09:38:52

Flask服务器应该以正确的格式返回JSON响应。看起来您可能正在使用googleactions包,但不幸的是,该包似乎已过时,其响应格式与Actions Builder所期望的格式不符

对于HandlerResponse类型,您应该查阅JSON schema。由于它是JSON模式,因此可以使用a tool like Quicktype生成适当的类以获得额外的语法支持

架构文件还包括内部类型的定义

"HandlerResponse": {
  "description": "Represents a response sent from a developer's fulfillment to Actions on\nGoogle.",
  "type": "object",
  "properties": {
    "prompt": {
      "description": "Optional. Represents the prompts to be sent to the user, these prompts\nwill be appended to previously added messages unless explicitly\noverwritten.",
      "$ref": "#/definitions/Prompt"
    },
    "scene": {
      "description": "Optional. Represents the current and next scene. If `Scene.next` is set\nthe runtime will immediately transition to the specified scene.",
      "$ref": "#/definitions/Scene"
    },
    "session": {
      "description": "Optional. Describes data for the current session, session\nparameters can be created, updated, or removed by the fulfillment.",
      "$ref": "#/definitions/Session"
    },
    "user": {
      "description": "Optional. Use to specify user parameters to send back.",
      "$ref": "#/definitions/User"
    },
    "home": {
      "description": "Optional. Used to specify parameters related to the HomeGraph structure\nthat the target device belongs to. See\nhttps://developers.google.com/actions/smarthome/concepts/homegraph.",
      "$ref": "#/definitions/Home"
    },
    "device": {
      "description": "Optional. Use to move between Assistant devices the user has access to.",
      "$ref": "#/definitions/Device"
    },
    "expected": {
      "description": "Optional. Describes the expectations for the next dialog turn.",
      "$ref": "#/definitions/Expected"
    }
  }
},

相关问题 更多 >