J'essaye de créer une application qui enverrait des messages à un chat sur le framework Microsoft Bot basé sur lib Directline, et répondra avec la réponse. L'application est une application Web qui devrait envoyer une requête POST qui devrait transmettre le message au client bot, et répondre avec la réponse du bot de Microsoft bot framework.Comment démarrer une conversation depuis le client nodejs vers le robot microsoft
Un exemple de requête HTTP POST:
http://host:port/api/message CORPS: {message: "Salut"}
Il devrait envoyer le "Salut" comme un texte au robot de chat pertinent le cadre de Microsoft Bot et répondre avec quoi jamais le cadre répond.
J'ai mis le secret et fait tout ce que je devrais avoir fait pour que cela fonctionne, mais j'ai un problème pour générer une conversation qui devrait parler avec le bot de discussion.
Voici comment je l'ai fait:
"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)
})
Je l'ai déjà vérifié et je n'ai pas réussi à résoudre ce que je voulais. Laissez-moi essayer de vous expliquer. Je veux être en mesure d'envoyer à partir du client http une requête de poste avec le texte dans le corps comme json, donc il passera le message à travers le client bot et devrait répondre avec le bot répondre. – user4860092
Mais en utilisant DirectLine? ou l'API REST pour parler avec des robots? vous n'expliquez pas quel est votre problème –
Je souhaite que mon propre service d'API de repos soit disponible pour prendre en charge une conversation simple. Ainsi, lorsque vous envoyez une simple requête POST standard avec le message qui s'y trouve, le message est transmis au client bot. Le client bot devrait parler avec le bot de frameworks Microsoft avec l'API de ligne directe. C'est une autre couche de conversation, une couche plus simple que j'essaie de construire. – user4860092