슬랙과 웹상의 채팅/MS를 연결해 조심스럽게 만든 bot 제작 프레임워크'Bot Builder'를 사용해 봤습니다!
18187 단어 BotConnectorBotFrameworkBotbuilder
이 Microsoft Bot Framework는 공식 문서에 이렇게 쓰여 있습니다.
http://docs.botframework.com/
단순하게 봇(SDK)을 만들 수 있다'는 것은 전체 프레임의 극소수 부분에 불과하며, 여러 채널을 빈틈없이 연결할 수 있다는 점도 강점이다.
이게 있으면'프로그래밍bot'에 대한 보답이 유난히 커지겠지!
이번에는 이 "Bot Connector"를 해보고 싶습니다.
애플리케이션 등록
먼저, Botframework에서 응용 프로그램 등록을 해야 합니다(app id, secret 미리 취득).
열기https://dev.botframework.com/#/bots.필요하면 여기서 MS 계정
localhost
지만, 이것이라면 움직이지 않습니다.바로 bot이라고 써서 연결해 보세요!
웹 채팅 슬랙에 연결해 보았습니다.
인터넷 채팅, Bot Connector 측에서 iframe을 준비했기 때문에 인터페이스를 만들 필요가 없습니다!
채널 연결 및 활성화
웹 채팅 사용
bot의 설정 화면에 연결된 채널의 일람을 클릭할 수 있기 때문에 웹을 선택합니다.
이렇게 웹 채팅을 활용한 준비가 완료되었습니다.
그런 다음 표시된 "Embed template"를 웹 페이지에 설정합니다.
※ iframe의 src 중
YOUR_SECRET_HERE
를Slack 사용
Slack도 같은 주소 완성 w
(Slack 측) Token, secret을 가져올 때 "Add To Slack"단추가 표시됩니다. 사용하십시오.
코드
http://docs.botframework.com/connector/libraries/node 샘플이 있는데 이를 바탕으로 앵무새 학설형bot을 제작한다.
var restify = require('restify');
var msRest = require('ms-rest');
var connector = require('botconnector');
var server = restify.createServer();
server.use(restify.authorizationParser());
server.use(restify.bodyParser());
/*
* AppSecretには「Primary app secret」の値を入れればOKです!
*/
var appId = process.env.appId || 'your appId';
var appSecret = process.env.appSecret || 'your appSecret';
var credentials = new msRest.BasicAuthenticationCredentials(appId, appSecret);
/*
* サンプル中とのコードと異なる部分。
* 第2引数に「リクエストの認証」を入れていますが、EndpointがHTTPの場合は認証が渡ってきません。
*/
server.post('/v1/messages', function (req, res) {
var msg = req.body;
if (/^delay/i.test(msg.text)) {
setTimeout(function () {
var reply = {
replyToMessageId: msg.id,
to: msg.from,
from: msg.to,
text: 'I heard "' + msg.text.substring(6) + '"'
};
sendMessage(reply);
}, 5000);
res.send({ text: 'ok... sending reply in 5 seconds.' })
} else {
res.send({ text: 'I heard "' + msg.text + '". Say "delay {msg}" to send with a 5 second delay.' })
}
});
server.listen(process.env.PORT || 8080, function () {
console.log('%s listening to %s', server.name, server.url);
});
function sendMessage(msg, cb) {
var client = new connector(credentials);
var options = { customHeaders: {'Ocp-Apim-Subscription-Key': credentials.password}};
client.messages.sendMessage(msg, options, function (err, result, request, response) {
if (!err && response && response.statusCode >= 400) {
err = new Error('Message rejected with "' + response.statusMessage + '"');
}
if (cb) {
cb(err);
}
});
}
큰 변경은 없었으나 접수 승인 처리는 생략했다.단점을 HTTPS로 설정할 때 App-ID: App Secret을 통해 Basic 인증(※ 검증되지 않음>>)을 받을 수 있으며, 그렇지 않으면 Request를 할 수 없습니다.autorization에는 가격이 없습니다.따라서 모든 인증은 실패할 것이다.
스크립트에서 환경 변수에서 appId/appSecret을 호출하는 중입니다. 이것을 더해서 실행하십시오
sh
appId=hogehoge appSecret=fugafuga node bot.js
잘 작동하면 아래의 인상에 따라 움직일 수 있다.나는 소스 하나로 여러 채널에bot을 간단하게 담을 수 있다고 생각한다
인터넷 채팅 프레젠테이션
Slack 채팅 데모
Bot Builder 활용
앞에서 언급한 Bot Builder그 1·두 번째
실제로 이 "Bot Connector"를 기반으로 하는 Client가 있습니다.( 공식: BotConnectorBot )
따라서 Dialog를 사용하여 이 기능을 실현하고 여러 채널에 간단하게 연결할 수 있다.
예를 들어 아래 코드에서'인사 후 답장 안녕'bot이 동작한다.
var restify = require('restify');
var builder = require('botbuilder');
var bot = new builder.BotConnectorBot({ appId: process.env.appId, appSecret: process.env.appSecret});
var dialog = new builder.CommandDialog();
dialog.matches(['Hi', 'Hello', 'こんにちは'], function (session) {
session.send('こんにちは');
});
bot.add('/', dialog);
var server = restify.createServer();
server.post('/v1/messages', bot.listen());
server.listen(process.env.port || 8080, function () {
console.log('%s listening to %s', server.name, server.url);
});
감상그리고 "bot은 굉장히 쉽게 움직일 수 있어요"라는 소감도 있고요.
다만, 현재라면 문서가 좋지 않은 인상을 주고 고통스럽다.
아직 만질 수 없는 실감이 나기 때문에 조금만 파고 놀아요~ 이렇게 당분간 계속할 예정입니다!
봇 신나.
Reference
이 문제에 관하여(슬랙과 웹상의 채팅/MS를 연결해 조심스럽게 만든 bot 제작 프레임워크'Bot Builder'를 사용해 봤습니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/o0h/items/c10491a48cf014195338텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)