Пожалуйста, проверьте, что у вас есть все необходимые учетные данные, вставленные в конфигурацию. Тест в веб-чате должен работать без проблем.
Тем не менее, функция Test in Web Chat использует более старую реализацию v3 BotFramework-WebChat (т.е. BotChat). Несмотря на то, что он должен быть обновлен (пока нет ETA), базовый код может стать для вас проблемой.
Если вы хотите протестировать веб-чат, я бы порекомендовал настроить среду веб-чата v4 локально. Это на самом деле довольно легко сделать. Вот как, если интересно,
Сначала включите канал Direct Line в настройках бота Azure ...
* +1012 *
... и скопируйте секрет и сохраните где-нибудь на данный момент.
Добавьте этот код в файл index.js вашего бота (может быть добавлен до конца полностью). Сохраните и получите доступ к скопированному секрету прямой линии из файла .env. Это сохраняется как directLineSecret
и передается в авторизацию как Bearer {token}
. Также обратите внимание, что используется порт 3500, но вы можете установить его на любой выбор. Эта конечная точка токена будет работать как ваш бот.
/**
* Creates token server
*/
const bodyParser = require('body-parser');
const request = require('request');
const corsMiddleware = require('restify-cors-middleware');
const cors = corsMiddleware({
origins: ['*']
});
// Create server.
let tokenServer = restify.createServer();
tokenServer.pre(cors.preflight);
tokenServer.use(cors.actual);
tokenServer.use(bodyParser.json({
extended: false
}));
tokenServer.dl_name = 'DirectLine';
tokenServer.listen(process.env.port || process.env.PORT || 3500, function() {
console.log(`\n${ tokenServer.dl_name } listening to ${ tokenServer.url }.`);
});
// Listen for incoming requests.
tokenServer.post('/directline/token', (req, res) => {
// userId must start with `dl_`
const userId = (req.body && req.body.id) ? req.body.id : `dl_${ Date.now() + Math.random().toString(36) }`;
const options = {
method: 'POST',
uri: 'https://directline.botframework.com/v3/directline/tokens/generate',
headers: {
'Authorization': `Bearer ${ process.env.directLineSecret}`
},
json: {
User: {
Id: userId
}
}
};
request.post(options, (error, response, body) => {
if (!error && response.statusCode < 300) {
res.send({
token: body.token
});
} else {
res.status(500);
res.send('Call to retrieve token from DirectLine failed');
}
});
});
Затем создайте эту простую страницу index.html, которая запрашивает токен из конечной точки токена и создает экземпляр веб-чата. Для этого потребуется ключ подписки Cognitive Services Speech Service, чтобы включить речь, которую вы можете создать в Azure. Если вы изменили порт в вашей конечной точке токена, сопоставьте его в html-файле в await fetch
.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>WebChat</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
html,
body {
height: 100%
}
body {
margin: 0
}
#webchat,
#webchat>* {
height: 100%;
width: 100%;
}
</style>
</head>
<body>
<div id="webchat" role="main"></div>
<script type="text/javascript"
src="https://unpkg.com/markdown-it/dist/markdown-it.min.js"></script>
<script
src="https://cdn.botframework.com/botframework-webchat/master/webchat.js"></script>
<script>
( async function () {
const res = await fetch( 'http://localhost:3500/directline/token', { method: 'POST' } );
const { token } = await res.json();
const webSpeechPonyfillFactory = await window.WebChat.createCognitiveServicesSpeechServicesPonyfillFactory( {
region: '', // 'westus', for example
subscriptionKey: ""
} );
window.WebChat.renderWebChat( {
directLine: window.WebChat.createDirectLine( { token } ),
webSpeechPonyfillFactory
}, document.getElementById( 'webchat' ) );
document.querySelector( '#webchat > *' ).focus();
} )().catch( err => console.error( err ) );
</script>
</body>
</html>
Наконец, добавьте локальный веб-сервер, на котором запущена ваша html-страница, в список доверенных URL-адресов на канале Direct Line в настройках бота Azure, и локально запускайте html-страницу рядом с вашим ботом. Теперь у вас есть локальная среда чата v4, с которой вы можете протестировать.
Надежда на помощь !!