到目前为止,我有一个会话应用程序,它与后端 PHP 服务器的 Webhook 配合使用,该服务器将 JSON 响应发送回 Dialogflow API。到目前为止,它的工作相当顺利。
开发的下一步是让 Google Assistant 通过多部分响应来响应用户。我见过“Lucky Trivia”游戏做了类似的事情(附有屏幕截图)。

我不清楚如何让助手应用程序生成多个气泡。
我尝试过的一些解决方案:
<speak>或<p>标签这些都没有让我达到我想要的程度。
丰富的响应最多适用于两个单独的气泡,仅此而已。
SSML 看起来很有前途,是添加韵律和原声摘要的好方法,但我尝试过的所有方法都无法提供多部分语音气泡。
我找不到适用于"platform":"google". platform=google事实上,该页面上没有列出具体的支持,但我在一些请求/响应 JSON 对象中看到了它。
followupEvent 响应似乎最有希望,但据我所知,从指定事件触发的意图完全取代了当前响应,而不仅仅是添加到它上面。
所以,我的问题是:使用 DialogFlow 在 Google Assistant 上获取类似多部分消息的最佳策略是什么?
最理想的是,我想按顺序向我的 webhook 发出新请求,但如果有必要,构建一个包含所有部分的大型响应是一个可行的选择。
Lucky Trivia是如何做到这一点的?
我已经安装了几个看起来合适的软件包:
yum install ImageMagick ImageMagick-devel ImageMagick-c++
Run Code Online (Sandbox Code Playgroud)
但我仍然没有 Magick++.h 文件。我应该寻找什么包裹?
我正在尝试使用计算器(reverse Polish Notation)JQuery, HTML, CSS.
我有[ 0~9 NUMBER BUTTONS]和[ +,-,=,/ OPERATOR BUTTONS],需要确保它们的工作方式不同.但是,我想向他们展示[ input textbox.]
那么如何设置每个按钮的事件处理程序Jquery?你有什么好主意吗?我应该只使用If, else if, else..?
$(document).ready(function() {
$('button').click(function(){
var showMessage = $(this).attr("value");
console.log(showMessage);
if(showMessage!="Clear"){ // ??? ???
$('#showProcess').val(function(n,c){
return c+showMessage;
});
}
else if(showMessage=="Clear"){
$('#showProcess').val(""); // Clear
}
});
$('button').hover( // ?? hover ?? ?? ??
function(){
$(this).addClass('active');
},
function(){
$(this).removeClass('active');
}
);
});
Run Code Online (Sandbox Code Playgroud)
我已按照此stackoverflow问题中发布的指示,但我被卡住了.
我正在使用来自Github的tumblr/tumblr.php(官方的"tumblr API的PHP客户端").
我也在这里遵循指示(实际上是推特),但这些指示并不适合我正在使用的git库.
我有一个有效的消费者密钥和秘密.
从那些我发出请求并得到oauth_token和oauth_token_secret就像这样:
$client = new Tumblr\API\Client($consumerKey,$consumerSecret);
$client->getRequestHandler()->setBaseUrl('https://www.tumblr.com/');
$req = $client->getRequestHandler()->request('POST', 'oauth/request_token', [
'oauth_callback' => '...',
]);
// Get the result
$result = $req->body->__toString();
print_r( $result );
Run Code Online (Sandbox Code Playgroud)
这给了我:
oauth_token=2C6f...MqSF&oauth_token_secret=HaGh...IJLi&oauth_callback_confirmed=true
Run Code Online (Sandbox Code Playgroud)
然后我将用户发送到http://www.tumblr.com/oauth/authorize?oauth_token=2C6f...MqSF,以便他们允许访问该应用.重定向到:...?oauth_token=2C6f...MqSF&oauth_verifier=nvjl...GtEa#_=_
现在在最后一步,我相信我应该将我的请求令牌转换为访问令牌.是对的吗?我做错了什么:
$client = new Tumblr\API\Client($consumerKey,$consumerSecret);
$client->getRequestHandler()->setBaseUrl('https://www.tumblr.com/');
$req = $client->getRequestHandler()->request('POST', 'oauth/access_token', [
'oauth_token' => '2C6f...MqSF',
'oauth_verifier' => 'nvjl...GtEa'
]);
// Get the result
$result = $req->body->__toString();
print_r( $result );
Run Code Online (Sandbox Code Playgroud)
因为我得到这样的答复:
oauth_signature [AqbbYs0XSZ7plqB0V3UQ6O6SCVI=] does not match expected value [0XwhYMWswlRWgcr6WeA7/RrwrhA=]
Run Code Online (Sandbox Code Playgroud)
我的最后一步出了什么问题?
我不确定我是否应该发送oauth_verifier …
我试图理解为什么这个程序将在C中编译而不是C++,为什么extern "C" { }似乎没有帮助.
这个简短的程序实际上并没有做任何事情,但是通过例子说明编译时C和C++之间存在差异.
#include <GL/gl.h>
int main() {
glBegin(GL_POLYGON);
glUseProgram(0);
glEnd();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当你将它保存为ex.c并用gcc ex.c -lGL -o ex它编译它时,按预期编译和链接.
当您将其保存为ex.cpp并使用它编译时gcc ex.cpp -lGL -o ex会出现编译器错误:
error: ‘glUseProgram’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
请注意,它不会抱怨glBegin,glEnd或GL_POLYGON.实际上,你可以注释掉glUseProgram行,它可以编译为cpp程序.
现在,为什么我不能这样包装程序extern "C":
extern "C" {
#include <GL/gl.h>
int main() {
glBegin(GL_POLYGON);
glUseProgram(0);
glEnd();
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
这样做仍会导致相同的编译器错误.我的理解extern "C"是不完整的.
最终我需要理解什么是错误的,因为我正在尝试编写一个C++程序,该程序使用许多显然不会在C++中编译的GL函数.
如何在C++程序中使用gl.h?
为了解决一些评论:我在X11上使用Mesa.glUseProgram定义在glext.h中,它通过gl.h包含在内.我已经在raspi上使用OpenGL(实际上是GLES)编写了一个C++程序.将它转换为X11证明是一件非常重要的事情.
我已经尝试了一些uwsgi教程,但无法在我的浏览器中运行一个简单的python脚本.我已经通读了这个(http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html)和这个(https://www.digitalocean.com/community/articles/how-to-deploy-python- wsgi-applications-using-uwsgi-web-server-with-nginx)和其他人,但由于某种原因无法运行简单的uwsgi应用程序.我目前没有通过网络服务器,只是uwsgi本身.
我有以下wsgi.py:
def application(env, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return ["Hello!"]
Run Code Online (Sandbox Code Playgroud)
我跑:
uwsgi --socket 127.0.0.1:8080 --chdir /my/program/path --pp .. -w wsgi
Run Code Online (Sandbox Code Playgroud)
产生以下输出(看起来很有希望):
*** Starting uWSGI 2.0.3 (64bit) on [Mon Apr 14 12:51:32 2014] ***
compiled with version: 4.6.3 20120306 (Red Hat 4.6.3-2) on 14 April 2014 12:01:33
os: Linux-3.1.0-7.fc16.x86_64 #1 SMP Tue Nov 1 21:10:48 UTC 2011
nodename: ip-10-252-98-215
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /usr/oai/icscada/www
detected …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的js对象:
var obj = {
'1001' : [...data...],
'1002' : [...data...],
'1003' : [...data...],
'1004' : [...data...],
'1005' : [...data...],
'1006' : [...data...],
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时:
for (var i in obj) {
console.log(i);
}
Run Code Online (Sandbox Code Playgroud)
我在Firefox中获得了不可预测的订单.换句话说,对于大多数浏览器,我将以下内容记录到控制台:
1001
1002
1003
1004
1005
1006
Run Code Online (Sandbox Code Playgroud)
但Firefox更像这样:
1006
1003
1001
1002
1005
1004
Run Code Online (Sandbox Code Playgroud)
我怎样才能遍历对象的数组并确保我以正确的顺序获取它们.
另外,为了使其更复杂,密钥可能不是按顺序排列的,并且可能不是全部都是整数.