Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何启动从nodejs客户端到microsoft bot的对话_Node.js_Azure_Bots_Botframework_Chatbot - Fatal编程技术网

Node.js 如何启动从nodejs客户端到microsoft bot的对话

Node.js 如何启动从nodejs客户端到microsoft bot的对话,node.js,azure,bots,botframework,chatbot,Node.js,Azure,Bots,Botframework,Chatbot,我正在尝试构建一个应用程序,它可以将消息发送到基于Directline库的MicrosoftBot框架上的聊天室,并用答案进行回复。该应用程序是一个web应用程序,其中应发送POST请求,该请求应将消息转发给bot客户端,并使用来自Microsoft bot framework的bot响应进行回复 HTTP POST请求的一个示例: 正文:{留言:“你好”} 它应该将“Hi”作为文本发送到Microsoft bot框架中的相关聊天机器人,并用框架回复的内容进行回复 我已经说出了这个秘密,并且做

我正在尝试构建一个应用程序,它可以将消息发送到基于Directline库的MicrosoftBot框架上的聊天室,并用答案进行回复。该应用程序是一个web应用程序,其中应发送POST请求,该请求应将消息转发给bot客户端,并使用来自Microsoft bot framework的bot响应进行回复

HTTP POST请求的一个示例:

正文:{留言:“你好”}

它应该将“Hi”作为文本发送到Microsoft bot框架中的相关聊天机器人,并用框架回复的内容进行回复

我已经说出了这个秘密,并且做了我认为应该做的一切,以使它工作,但是,我在生成一个应该与聊天机器人对话的对话时遇到了问题

我就是这样做的:

"use strict";

require('dotenv').config();

var express = require('express');
var app = express();
var fs = require("fs");
var bodyParser = require("body-parser");
var http = require('http');
var postLib = require("./lib");

var messageFilePath="message.out";

var cors = require('cors');
var uuid = require('uuid');

//new botclient
var client = require('directline-api');

// config items

var pollInterval = 1000;
var directLineSecret = 'secret';
var directLineClientName = 'DirectLineClient';
var directLineSpecUrl = 'https://docs.botframework.com/en-us/restapi/directline3/swagger.json';

///bot client end


var sendmail = require('sendmail')({silent: true})

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

app.options('*', cors()); // include before other routes
var corsOptions = {
  origin: '*',
  optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
};

    app.post('/interact/message', cors(corsOptions), function(req, res) {
                var uuid1 = uuid.v1();
                var bodyMessage = JSON.stringify(req.body);
                var log = uuid1 + ', ' + new Date().getTime() + ", " + bodyMessage;
                if (req.query.botId == 1) {
                        emailMessage(log);
                        res.send(postLib.reply.reply);
                }
                if (req.query.botId == 2) {
                        botMessage(bodyMessage.message);
                        res.send(postLib.reply.reply);
                }

});




function emailMessage(log){

                sendmail({
                        from: postLib.mail.from,
                        to: postLib.mail.to,
                        subject: postLib.mail.subject,
                        html: 'this is the log: [' + log + ']',
                        }, function(err, reply) {
                        console.log(err && err.stack);
                        console.dir(reply);
                });


                fs.appendFile(messageFilePath, "\n" + log, function(error){
                        if (error) throw error;
                });
}


function botMessage(message){

var token = client.getToken(directLineSecret);

// create a conversation
var conversationId = client.createConversation(token);

// post a message in a conversation
client.postMessage(token, conversationId, {
                text: message
            });
return client.getMessage(token, conversationId, 0);
}

var server = app.listen(8082, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("interact post server listening at http://%s:%s", host, port)

})

您遇到的问题不清楚,但我建议您检查。

您遇到的问题不清楚,但我建议您检查。

我已经检查了,但没有解决我想要的问题。让我重新解释一下。我希望能够从http客户端发送一个post请求,其中正文中的文本为json,因此它将通过bot客户端传递消息,并应使用bot回复进行响应?还是使用RESTAPI与机器人对话?你没有解释你的问题是什么我想让我自己的rest API服务公开以支持简单的对话,因此当你发送一个包含消息的简单标准POST请求时,它将通过bot客户端传递消息。bot客户端应使用直连api与Microsoft Framework bot对话。这是一种对话的另一层,一种我试图构建的更简单的层;那么问题出在哪里呢。直连层已经在我发送给你的示例中构建好了,所以只需在iti上添加你的层,我已经尝试了上面附加的示例,上面有我的http,但它不起作用。。。我已经添加了当我使用该方法时得到的异常,我已经检查了它,但没有设法解决我想要的问题。让我重新解释一下。我希望能够从http客户端发送一个post请求,其中正文中的文本为json,因此它将通过bot客户端传递消息,并应使用bot回复进行响应?还是使用RESTAPI与机器人对话?你没有解释你的问题是什么我想让我自己的rest API服务公开以支持简单的对话,因此当你发送一个包含消息的简单标准POST请求时,它将通过bot客户端传递消息。bot客户端应使用直连api与Microsoft Framework bot对话。这是一种对话的另一层,一种我试图构建的更简单的层;那么问题出在哪里呢。直连层已经在我发送给你的示例中构建好了,所以只需在iti上添加你的层,我已经尝试了上面附加的示例,上面有我的http,但它不起作用。。。我添加了使用该方法时遇到的例外情况