Facebook 메신저 채팅 봇 및 NodeJS를 사용한 약속 예약
Facebook은 매우 유연하며 많은 멋진 기능을 제공합니다. 메신저는 자신의 Facebook 페이지에 추가할 수 있지만 자신의 웹사이트나 앱에 직접 삽입할 수도 있습니다. 교육 목적으로 Facebook 페이지에서 사용할 것입니다. 전체 코드는 이 게시물 하단의 GitHub 저장소에 있습니다.
작동 방식에 대한 기본 데모는 다음과 같습니다.
API 자격 증명 얻기
Facebook Messenger API를 시작하려면 an official guide을 팔로우하십시오.
App Secret Key
, Page Access Token
및 Callback user token
의 세 가지 중요한 자격 증명을 얻어야 합니다. 마지막 토큰은 사용자 정의 값입니다.구현
단계 중 하나에서 웹후크 URL을 서버에 제공해야 합니다. 이렇게 하면 Facebook이 연결을 확인하고 사용자 정의 토큰의 유효성을 검사할 수 있습니다.
// GET request
router.get('/spurwing-fbbot/', (req, res) => {
// verify token and send back the challenge
});
Facebook 앱이 생성되고 웹후크가 Facebook에서 성공적으로 확인되면 페이지의 메신저 및 채팅 봇 구현 및 테스트를 시작할 수 있습니다.
// POST request
router.post('/spurwing-fbbot/', async (req, res) => {
verifyRequestSignature(req, res) // make sure it really is Facebook's message
for (const e of req.body.entry) {
if (e.messaging)
for (const m of e.messaging) {
await fb_msg_process(m.sender.id, m.message)
}
}
res.send({success:1})
});
위의 코드는 메신저를 통해 사용자 메시지를 수신하기 위한 매우 간단한 라우터 구현입니다. 다음으로 사용자 텍스트를 처리하고 적절하게 회신해야 합니다.
async function fb_msg_process(senderId, msg) {
// default fall-back message
let resp = {text: "I don't know what you mean :("}
if (msg && msg.text) {
let text = msg.text.toLowerCase();
if (msg.quick_reply && msg.quick_reply.payload)
text = msg.quick_reply.payload;
switch(true) {
case /^book$/.test(text):
resp = await fb_msg_process_funcs.book(text);
break;
case /^book_day:.+$/.test(text):
resp = await fb_msg_process_funcs.book_day(text);
break;
case /^book_slot:.+$/.test(text):
resp = await fb_msg_process_funcs.book_slot(text);
break;
}
}
fb_msg_reply(senderId, resp) // send a reply back
}
위의 코드는 컨텍스트에 따라 수신된 메시지를 구문 분석하고 처리합니다. 상단의 애니메이션 gif는 이 정확한 논리를 보여줍니다.
약속 예약 및 예약 논리는 Spurwing API(NodeJS library)에서 제공합니다. 사용 가능한 모든 날짜를 나열한 다음 지정된 날짜에 사용 가능한 모든 시간 슬롯을 나열하고 마지막으로 선택한 시간 슬롯에 약속을 예약할 수 있습니다. 이 구현의 전체 코드는 GitHub repository here 의
index.js
에 있습니다.결론
이것은 Facebook Messenger API를 사용한 매우 간단하면서도 효과적인 챗봇 구현입니다. 그러나 다음과 같은 몇 가지 주요 세부 정보가 누락되었습니다.
사용자의 시간대와 빠른 답장 입력을 처리하는 방법을 결정하는 것은 개발자의 몫입니다. 후자는 시간 슬롯을 수동으로 입력하고 가용성에 대한 피드백을 제공하여 달성할 수 있으며, 더 복잡한 언어 구문 분석을 위해 NLP 전략에 도달할 수도 있습니다. 그러나 초보자 프로그래머라면 간단하고 쉽게 유지하십시오.
더 많은 예약 및 캘린더 솔루션을 보려면 Github account을 방문하십시오.
Reference
이 문제에 관하여(Facebook 메신저 채팅 봇 및 NodeJS를 사용한 약속 예약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/spurwing/appointment-booking-with-facebook-messenger-chat-bots-and-nodejs-26hk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)