Joan Yin과 Camilo Reyes가 동료 검토 한 Node.js 및 Heroku를 사용하여 Facebook 챗봇을 구축하십시오. itepoint 컨텐츠를 최대한 활용 한 모든 Sitepoint Peer Reviewers에게 감사합니다!
작년 F8 컨퍼런스에서 Facebook은 메신저 플랫폼을 시작하여 개발자가 메신저 또는 Facebook 페이지의 사람들과 대화 할 수있는 봇을 만들 수 있습니다. 로봇을 사용하면 애플리케이션 소유자가 대중으로 확장 될 수있는 개인화되고 대화식 커뮤니케이션을 제공하여 사용자와 더 잘 상호 작용할 수 있습니다. 기업 및 애플리케이션 소유자는 출시 이후 챗봇에 큰 관심을 보였습니다. 발표 3 개월 후, 플랫폼에 11,000 개의 로봇이 구축 된 것으로 추정됩니다. 챗봇은 기업 및 애플리케이션 소유자뿐만 아니라 혜택을받습니다. 이 로봇의 사용자는 다음과 같은 수많은 서비스를 즐길 수 있습니다.
즉시 고객 지원을 받으십시오
예비 항공편
영화 티켓 구매
Netflix 영화 권장 사항 를 받으십시오
일기 예보를 받으십시오
뉴스를 따르십시오
드레싱 조언을 얻으십시오
손에있는 재료를 기반으로 저녁 식사 아이디어를 얻으십시오
엔터테인먼트
챗봇의 현재 관심과 매력은 인공 지능 기술의 개선으로 인해 사용자와의 상호 작용에 점점 더 능숙해질 것입니다.
이 기사에서는 Facebook 페이지를 대신하여 메신저를 통해 사용자와 상호 작용할 수있는 Facebook 챗봇을 만드는 방법을 살펴 봅니다. 우리는 사용자에게 지정한 영화에 대한 다른 세부 사항을 제공 할 수있는 로봇을 만들 것입니다.
키 포인트
간단한 규칙 기반 챗봇 구축에는 기본 AI 또는 기계 학습 지식이 필요하지 않지만 NLP를 통합하면 사용자와 자연스럽게 상호 작용할 수있는 로봇의 능력을 향상시킬 수 있습니다.
Heroku 플랫폼은 HTTPS를 상자에서 지원하기 때문에 배포를위한 것이며 Facebook Webhook 확인에 필요한 HTTPS를 지원합니다.
Heroku의 환경 변수는 API 토큰 및 민감한 데이터를 보호하는 데 필수적이며 이러한 세부 사항은 응용 프로그램의 소스 코드에 하드 코딩되지 않도록합니다.
Facebook Messenger 플랫폼을 사용하면 풍부한 사용자 경험을 생성 할 수 있으며, 환영 화면 및 상호 작용을 시작하도록 구성 할 수있는 시작 버튼을 포함한 기능을 포함합니다.
MLAB에서 호스팅 된 MongoDB는 사용자 데이터 및 세션 상태를 관리하는 데 사용되므로 챗봇이 진행중인 사용자 상호 작용을 효과적으로 추적하고 응답 할 수 있습니다.
챗봇이 공개되어 대중과 상호 작용하려면 플랫폼 정책 및 보안 표준을 준수하기 위해 Facebook의 검토 프로세스를 통과해야합니다.
로봇을 만들려면 AI를 이해해야합니까?
AI의 숙련도는 특히 복잡한 로봇을 구축 할 때 확실히 도움이 될 수 있지만 필요하지 않습니다. 기계 학습을 이해하지 않고도 로봇을 구축 할 수 있습니다.
두 가지 유형의 로봇을 만들 수 있습니다. 하나는 일련의 규칙을 기반으로하고 다른 하나는 머신 러닝을 사용하고 있습니다. 전자는 제공 할 수있는 상호 작용면에서 제한적입니다. 특정 명령에만 응답 할 수 있습니다. 이것이 우리가 구축 할 로봇의 유형입니다.
머신 러닝 로봇을 사용하면 더 나은 사용자 상호 작용을 얻을 수 있습니다. 사용자는 명령을 사용하지 않고 인간의 상호 작용에서와 같이 로봇과 더 자연스럽게 상호 작용할 수 있습니다. 로봇은 또한 사람들과의 대화에서 배우면서 더 똑똑해질 것입니다. 우리는 이러한 유형의 로봇의 건설을 향후 기사에서 저장할 것입니다. 그러나 기계 학습 지식이 필요하지 않습니다. 다행스럽게도 Wit.ai 및 API.AI와 같은 서비스가 있으며 개발자는 기계 학습 (특히 자연어 처리 -NLP)을 응용 프로그램에 통합 할 수 있습니다.
시작
여기에서 완료된 데모 응용 프로그램의 코드를 다운로드 할 수 있습니다.
챗봇이 Facebook 사용자와 통신하려면 메시지를 수신, 처리 및 보낼 수있는 서버를 설정해야합니다. 서버는이를 위해 Facebook 그래프 API를 사용합니다. 그래프 API는 Facebook 플랫폼 데이터에 들어오고 나가는 주요 방법입니다. 서버에는 Facebook 서버가 액세스 할 수있는 엔드 포인트 URL이 있어야하므로 로컬 시스템에 웹 응용 프로그램을 배포하는 것이 작동하지 않으므로 온라인으로 가져와야합니다. 또한 그래프 API의 버전 2.5부터 서비스에 대한 새 구독은 보안 HTTPS 콜백 URL을 사용해야합니다. 이 튜토리얼에서는 모든 기본 appName.herokuapp.com 도메인에 SSL이 활성화되어 있으므로 응용 프로그램을 Heroku에 배포합니다. 우리는 Node.js를 사용하여 웹 응용 프로그램을 구축 할 것입니다.
먼저, 컴퓨터에 노드가 설치되어 있는지 확인하십시오. 터미널에서 노드 -V를 입력하여이를 확인할 수 있습니다. 설치하면 버전 번호가 출력됩니다. 그런 다음 Heroku 명령 줄 인터페이스 (CLI)를 설치하십시오. 우리는 나중에 앱을 Heroku로 밀기 위해 사용합니다. Heroku -Version을 사용하여 CLI가 설치되어 있는지 확인하십시오.
프로젝트 디렉토리를 생성하고 다음 명령을 사용하여 package.json 파일을 초기화하십시오.
프롬프트를 따라 프로젝트 환경 설정을 설정하십시오.
package.json 파일을 생성 한 후 열기를 열고 스크립트 객체에 시작 속성을 추가하십시오. 이를 통해 Heroku는 응용 프로그램을 시작하기 위해 어떤 명령을 실행 해야하는지 알 수 있습니다. 프로젝트 설정 중에 App.js를 응용 프로그램의 진입 점으로 정의하므로 Node App.js를 시작 값으로 사용합니다. 프로젝트 설정에 따라이 설정을 변경하십시오.
<code>$ mkdir spbot
$ cd spbot
$ npm init</code>
로그인 후 복사
로그인 후 복사
로그인 후 복사
다음 노드 패키지를 설치하십시오.
프로젝트의 루트 디렉토리에 .gitignore 파일을 작성하고 Node_Modules 폴더를 포함하여 제출되지 않도록합니다.
프로젝트의 루트 디렉토리에서 app.js라는 파일을 만듭니다 (기본 이름이 사용되는 경우 index.js). 다음과 같이 수정하십시오
첫 번째 get 핸들러는 자체 테스트에 사용됩니다. 응용 프로그램이 성공적으로 배포되었는지 확인합니다. 두 번째 get 핸들러는 Facebook이 응용 프로그램의 검증에 사용하는 엔드 포인트입니다. 코드는 verification_token을 찾고 확인 요청에 전송 된 도전에 응답해야합니다.
당신은 자신의 토큰을 코드에 붙여 넣을 수 있습니다. 이 유형의 데이터는 환경 변수에서 가장 잘 저장되며, 이는 Heroku에서 프로젝트를 작성한 직후에 할 것입니다.
Heroku에 배포
Facebook 플랫폼이 백엔드 응용 프로그램에 연결하려면 먼저 온라인으로 가져와야합니다.
git 리포지토리를 만들고 다음 명령을 사용하여 프로젝트를 제출하십시오.
<code>node_modules</code>
로그인 후 복사
아직 없다면 무료 Heroku 계정에 가입하십시오.
터미널에서 Heroku에 로그인하고 응용 프로그램을 작성하십시오.
var express = require("express");
var request = require("request");
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.listen((process.env.PORT || 5000));
// 服务器索引页面
app.get("/", function (req, res) {
res.send("已部署!");
});
// Facebook Webhook
// 用于验证
app.get("/webhook", function (req, res) {
if (req.query["hub.verify_token"] === "this_is_my_token") {
console.log("已验证 webhook");
res.status(200).send(req.query["hub.challenge"]);
} else {
console.error("验证失败。令牌不匹配。");
res.sendStatus(403);
}
});
로그인 후 복사
Heroku Open 명령을 실행하면 응용 프로그램을 실행하는 링크가 기본 브라우저에서 열립니다. 모든 것이 잘되면 "배포 된!"텍스트가있는 페이지가 표시됩니다.
환경 변수를 만듭니다 <🎜 🎜>
<,> 진행하기 전에 Heroku에 환경 변수를 만들어 응용 프로그램의 확인 토큰을 저장하겠습니다.
Heroku 대시 보드를 열고 방금 배포 한 응용 프로그램을 선택하십시오. 애플리케이션의 <🎜 🎜> 설정
로 이동하여 <🎜 🎜> 구성 변수 표시 <🎜 🎜> 버튼을 클릭하십시오. verification_token을 <🎜 key <🎜 🎜>로 입력하고 토큰을
value
로 입력 한 다음 <🎜
를 클릭하여 <🎜 🎜>를 추가하십시오.
<<>
<,,> 코드에서 토큰 문자열 ( "this_is_my_token")을 process.env.verification_token으로 수정하십시오. 변경 사항을 제출하여 헤로쿠로 밀어 넣으십시오.
Facebook 페이지 및 응용 프로그램을 작성 <🎜 🎜
서버가 UP가 실행 중이면 이제 Facebook 응용 프로그램과 관련 페이지를 생성합니다. 새 페이지를 만들거나 기존 페이지를 사용할 수 있습니다.
Facebook 페이지를 만들려면 Facebook에 로그인하고 작성 페이지로 이동하십시오. 주어진 옵션에서 페이지 유형을 선택하십시오. 나는
엔터테인먼트 <🎜
를 선택했다.
<<> 그런 다음 페이지의 범주와 이름을 선택하십시오.
<<>
<<>
start
를 클릭 한 후 페이지가 작성되며 응용 프로그램 (설명, 웹 사이트, 프로필 사진, 대상 고객 등)에 대한 자세한 정보를 제공하라는 요청을받습니다. 이제이 설정 단계를 건너 뛸 수 있습니다.
<<> Facebook 응용 프로그램을 만들려면 새 응용 프로그램 추가 페이지로 이동하여 아래
기본 설정
링크를 클릭하여 아래 <🎜 🎜>를 선택하십시오. <<>
필요한 자세한 정보를 작성하십시오. 카테고리로 <🎜 🎜> 페이지 지향 응용 프로그램
를 선택하십시오.
<<>
<<> 를 클릭 한 후 앱 ID <🎜 를 작성하면 응용 프로그램의 대시 보드가 열립니다.
<<>
<🎜 🎜> <🎜 🎜> 제품 설정 <🎜 🎜 🎜
에서 메신저 <🎜 를 클릭하여 시작하려면 <🎜 🎜>를 시작하십시오. 그런 다음 아래와 같이 메신저 설정 페이지로 이동합니다.
<<> 메신저 사용자가 보낸 메시지 및 기타 이벤트를 받으려면 응용 프로그램을 사용하면 WebHook 통합이 가능해야합니다. 우리는 다음에 이것을 할 것입니다. WebHook (이전 <🎜
Live Update
)을 사용하면 API에 전화하지 않고 실시간으로 업데이트를 실시간으로 추적하고 받으려는 변경 사항을 구독 할 수 있습니다.
WebHook 섹션에서 를 클릭하십시오
업데이트 된 콜백 URL (백엔드 응용 프로그램에 정의 된 엔드 포인트 URL, 즉 <🎜 🎜>/webhook)을 입력하고 검증 토큰 (백엔드 응용 프로그램에 사용되는 토큰, 즉 프로세스에 저장된 ENV 값. verification_token) 및 모든 확인란을 선택하십시오. 이들은 응용 프로그램이 구독 할 이벤트를 지정합니다. 우리는 나중에 이러한 사건의 역할에 대해 배울 것입니다.
<<>
<<> Webhook을 성공적으로 활성화 한 후에는 Webhook 섹션에서
가 완성 된 및 가입 이벤트 목록을 볼 수 있습니다. 오류를받는 경우 Webhook Endpoint ( /webhook 끝)에 대한 올바른 URL을 입력했는지 확인하고 여기에 사용 된 토큰이 노드 애플리케이션에 사용하는 것과 동일해야합니다.
<<>
<🎜 🎜> <🎜 🎜> 토큰 생성 섹션에서 드롭 다운 메뉴에서 페이지를 선택하십시오. 인증 후 페이지 액세스 토큰이 생성됩니다.
<<> Heroku에서 다른 환경 변수를 생성하고 <🎜 🎜 key 를 page_access_token으로 설정하고 생성 된 토큰을 <🎜 value <🎜 🎜>로 가져갑니다. 생성 된 토큰은 Facebook에 표시되는 현재 페이지에 저장되지 않습니다. 페이지에 액세스 할 때마다 페이지 액세스 토큰 필드는 비어 있고 페이지 드롭 다운 메뉴에서 Facebook 페이지를 선택하면 새 토큰이 생성됩니다. 그러나 이전에 만든 모든 토큰은 계속 작동합니다. 따라서 페이지를 닫기 전에 토큰을 복사하십시오.
Webhook이 특정 페이지에서 이벤트를 받으려면 해당 페이지로 응용 프로그램을 구독해야합니다. webhook
섹션에서 구독하려는 페이지를 선택하십시오.
<<>
환영 화면 <🎜 🎜>
사용자가 봇과 새로운 대화를 시작할 때 가장 먼저 보는 것은 환영 화면입니다. 이 화면에는 이름, 설명, 프로필 사진 및 페이지의 표지 사진이 표시됩니다. 페이지 설명 대신 인사말 텍스트를 설정하여 화면을 사용자 정의 할 수 있습니다. 이를 사용하여 소개 메시지를 설정하여 사용자에게 봇에서 얻을 수있는 것을 알 수 있습니다.
기본적으로 대화를 시작하기 위해 사용자는 첫 번째 메시지를 봇에 보냅니다. 그러나 시작 버튼을 사용하여 봇이 초기 메시지를 보내도록 할 수 있습니다. 버튼은 이벤트를 서버로 보내고 응답 할 수 있습니다. 인사말 텍스트를 설정하려면 페이지를 열고 세트 <🎜 🎜>로 이동하십시오.
<<> 왼쪽 패널에서 <🎜 🎜> 메시지 <🎜
를 선택하고 오른쪽 패널에서
를 열어 메신저 인사 <🎜 🎜>를 표시하십시오. 선호도에 메시지를 설정하십시오.
<<>
시작 버튼을 활성화하려면 Token과 함께 다음 문으로 page_access_token 문자열을 교체하고 명령을 터미널에 붙여 넣습니다.
<code>$ mkdir spbot
$ cd spbot
$ npm init</code>
로그인 후 복사
로그인 후 복사
로그인 후 복사
위의 작업은 Facebook 그래프 API에 요청을 보냅니다. 요청이 성공하면 새 대화의 환영 화면에 시작 버튼이 나타납니다. 사용자는이 버튼을 클릭하고 Postback 수신 된 콜백을 트리거합니다. 그런 다음 봇 이이 Postback에 응답 할 수 있습니다.
postback은 다른 유형의 구성 요소 (포스트 백 버튼, 시작 버튼, 영구 메뉴 또는 구조화 된 메시지에 의해 트리거 될 수 있습니다. 모든 문자열을 페이로드로 설정할 수 있습니다. 백엔드에서는이 문자열을 사용하여 시작 버튼을 클릭하여 전송 된 포스트 백을 식별합니다. Postback 메시지를 받으려면 응용 프로그램은 Webhook에서 Postback을 구독해야합니다. Messaging_Postbacks 확인란을 선택하여 Webhook을 설정할 때 전에이 작업을 수행했습니다.
위 내용은 Node 및 Heroku와 함께 Facebook 채팅 봇 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!