我应该如何使用 C++ 创建 Google 操作实现端点?

How should I create Google Action fulfilment endpoint with C++?

我刚开始使用 Google Action,我想开发一个动作,使用语音控制在 PC/Mobile 和 Google 主页上流式传输我的 raspberry pi IP 摄像机视频。我已阅读 Google Action SDK 操作页面上的指南 , https://developers.google.com/actions/sdk/。但是,我卡在了履行部分。

如何使用 C++ 创建履行端点?

这是否意味着我需要在服务器端设置 RESTful API 来处理请求?它是否使用 POST/GET 请求 JSON?

使用操作包示例,我的履行端点将如何处理 actions.intent.MAIN 和 com.example.sekai.BUY?

"actions": [
    {
      "name": "MAIN",
      "intent": {
        "name": "actions.intent.MAIN"
      },
      "fulfillment": {
        "conversationName": "sekai-app"
      }
    },
    {
      "name": "BUY",
      "intent": {
        "name": "com.example.sekai.BUY",
        "parameters": [{
          "name": "color",
          "type": "SchemaOrg_Color"
        }],
        "trigger": {
          "queryPatterns": [
            "find some $SchemaOrg_Color:color sneakers",
            "buy some blue suede shoes",
            "get running shoes"
          ]
        }
      },

该指南展示了如何使用他们的 NodeJS 库

app.intent('actions.intent.TEXT', handleTextIntent);
app.intent('actions.intent.MAIN', handleMaiIntent);

我看到大部分教程和库都使用 Nodejs,但是,我希望它包含我现有的使用 C++ 的服务器。谢谢你的帮助。

您不需要 REST API。

需要能够接收(和解码)POST和JSON body at a public HTTPS web endpoint and to reply with JSON

JSON 的详细格式更广泛(它们可以包含更多字段,具体取决于场景),但 request 可能看起来像这样:

{
    "user": {
        "userId": "wCBxFjVLK8I+nxIXfFOHEf/iAvvaTFuzUdBw6Gv5K3Q="
    },
    "conversation": {
        "conversationId": "1494709404186",
        "type": "NEW"
    },
    "inputs": [
        {
            "intent": "actions.intent.MAIN",
            "rawInputs": [
                {
                    "inputType": "KEYBOARD",
                    "query": "talk to my test app"
                }
            ]
        }
    ],
    "surface": {
        "capabilities": [
            {
                "name": "actions.capability.AUDIO_OUTPUT"
            },
            {
                "name": "actions.capability.SCREEN_OUTPUT"
            }
        ]
    }
}

你需要respond这样的东西

{
    "conversationToken": "{\"state\":null,\"data\":{}}",
    "expectUserResponse": true,
    "expectedInputs": [
        {
            "inputPrompt": {
                "richInitialPrompt": {
                    "items": [
                        {
                            "simpleResponse": {
                                "textToSpeech": "Howdy! I can tell you fun facts about almost any number, like 42. What do you have in mind?",
                                "displayText": "Howdy! I can tell you fun facts about almost any number. What do you have in mind?"
                            }
                        }
                    ],
                    "suggestions": []
                }
            },
            "possibleIntents": [
                {
                    "intent": "actions.intent.TEXT"
                }
            ]
        }
    ]
}