0

在模拟器上测试我的应用程序时,我不断收到错误消息。
它给出:“APP NAME,现在没有响应,请稍后再试” 我在这里做错了什么?

动作.JSON

{
"accountLinking": {
    "clientId": "",          // SENSITIVE INFORMATION BLANK
    "clientSecret": "",       // SENSITIVE INFORMATION BLANK
    "grantType": "AUTH_CODE", 
  "authenticationUrl": "",      // SENSITIVE INFORMATION BLANK
  "accessTokenUrl": ""          // SENSITIVE INFORMATION BLANK


  },
  "actions": [{
        "description": "",
        "name": "MAIN",
        "fulfillment": {
            "conversationName": "PASS TEXT"
        },
        "intent": {
            "name": "actions.intent.MAIN",
            "trigger": {
                "queryPatterns": [
                    "talk to APP NAME"
                ]
            }
        }
    }],

 "conversations": {
        "PASS TEXT": {
            "name": "PASS TEXT",
            "url": ""  // MY FULFILLMENT END POINT
            "fulfillmentApiVersion": 2
        }
    }
}

这只是一个向用户返回“Sure, thing”的示例。

履行终点 PHP 文件

 header('Content-Type: application/json');
$a = array (
  'conversationToken' => '{"state":null,"data":{}}',
  'expectUserResponse' => true,
  'expectedInputs' => 
  array (
    0 => 
    array (
      'inputPrompt' => 
      array (
        'richInitialPrompt' => 
        array (
          'items' => 
          array (
            0 => 
            array (
              'simpleResponse' => 
              array (
                'textToSpeech' => 'Okay sure',
                'displayText' => 'Okay, Sure!',
              ),
            ),
          ),
          'suggestions' => 
          array (
          ),
        ),
      ),
      'possibleIntents' => 
      array (
        0 => 
        array (
          'intent' => 'actions.intent.TEXT',
        ),
      ),
    ),
  ),
);
echo json_encode($a);

PS:也没有任何PHP错误。访问 URL 时页面运行时没有任何错误。
我还用 OAuth PLAYGROUND 对其进行了测试,返回的结果是这样的

OAUTH 操场结果

 {
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "displayText": "Sure, thing!", 
            "textToSpeech": "Sure thing"
          }
        }
      ]
    }
  }, 
  "expectUserResponse": 0, 
  "isInSandbox": 1
}
4

2 回答 2

2

您的原始帖子中有两个问题(您已更新以反映这两个问题):

问题 1 - JSON 响应无效。

“expectUserResponse”的值应该是布尔值,而不是数字。这在 JSON 中很重要。所以应该是

"expectUserResponse": true

(“isInSandbox”的值也是如此)

问题 2 - 版本不匹配

您发送的响应似乎与规范的第 2 版相匹配,但您的 action.json 未指定版本,因此默认为第 1 版。要指定第 2 版,您的 action.json 文件的“conversations”部分应如下所示喜欢:

 "conversations": {
    "PASS TEXT": {
        "name": "PASS TEXT",
        "url": "https://whatever.example.com/endpoint",
        "fulfillmentApiVersion": 2
    }
 }

其他要看的东西

  • 尝试预先进行身份验证会带来复杂性。首先要尝试的是删除身份验证要求并确保您的端点返回有效响应。一旦你有这个工作,重新添加身份验证。

  • 沙盒模式与事务相关联。除非您正在进行交易,否则您可以尝试删除此参数。

  • 确保您的 webhook 是具有有效(非自签名)证书的 HTTPS 端点。如果需要创建隧道进行测试,可以考虑ngrok

  • 确保在更改时重新上传了 action.json 文件,并在完成后重新启动模拟器。

我的测试文件

我至少可以使用以下文件:

动作.json


{
    "actions": [
      {
        "description": "Default Welcome Intent",
        "name": "MAIN",
        "fulfillment": {
          "conversationName": "playground"
        },
        "intent": {
          "name": "actions.intent.MAIN",
          "trigger": {
            "queryPatterns": [
              "talk to playground"
            ]
          }
        }
      }
    ],
    "conversations": {
      "playground": {
        "name": "playground",
        "url": "https://example.ngrok.io/assistant/webhookEnd.php",
        "fulfillmentApiVersion": 2
      }
    }

}

webhookEnd.php文件

<?php
header('Content-Type: application/json');
$a = [
  "expectUserResponse" => false,
  "finalResponse" => [
    "richResponse" => [
      "items" => [
        [
          "simpleResponse" => [
            "textToSpeech" => "Sure thing!",
            "displayText" => "Sure, thing?"
          ]
        ]
      ]
    ]
  ]
];
echo json_encode($a);
于 2017-07-24T18:32:31.177 回答
0

我意识到在我的 google oauth 操场上,它有一个内部服务器错误

HTTP/1.1 200 Internal Server Error
Content-length: 293
X-powered-by: ASP.NET
Server: Microsoft-IIS/8.5
Date: Tue, 25 Jul 2017 08:10:11 GMT
Content-type: application/json
X-powered-by-plesk: PleskWin

然后我用谷歌搜索了这个错误,我看到帖子说 json 的响应格式不正确。所以我去履行文件并采取了响应json的样本,将其转换为数组和VOILA,内部服务器错误消失了

HTTP/1.1 200 OK
Content-length: 293
X-powered-by: ASP.NET
Server: Microsoft-IIS/8.5
Date: Tue, 25 Jul 2017 08:10:11 GMT
Content-type: application/json
X-powered-by-plesk: PleskWin 

我希望模拟器能够显示有关错误的更多详细信息,而不仅仅是提示“应用程序名称没有响应”
祝大家好运!

于 2017-07-25T13:49:54.273 回答