amazon echo로 회사 접수 시스템을 만들어 보았습니다.
Google Home에서 접수 시스템을 만들어 보았습니다.
또, JavaScript나 amazon lambda 만진 경험이 전혀 없기 때문에, 실수등 있으면 꼭 가르쳐 주세요!
구성 흐름
완성 동영상
amazon echo로 접수 시스템을 만들어 보았다 피 c. 라고 r. 이 m/q0c6rbK개K
필요한 것
- amazon developer 계정
- amazon Echo
- slack 계정 (채널 권한이 있음)
그럼 만들어 보자!
amazon echo로 접수 시스템을 만들어 보았다 피 c. 라고 r. 이 m/q0c6rbK개K
필요한 것
- amazon developer 계정
- amazon Echo
- slack 계정 (채널 권한이 있음)
그럼 만들어 보자!
alexa skill의 간단한 동작과 개발 절차는 여기를 참조했습니다.
2017년 12월 11일
대화 모델의 Intents 설정
아래의 경우에 대응하기 위한 인텐트를 추가했습니다.
- 약속이 있는 분
- 인터뷰에서 온 분(학생)
- 배송업체
- 방문객 수
슬랙 측의 일
채널에 Incoming WebHooks 만들기
WorkSpace 멤버의 ID를 가져옵니다.
<@userID>
에서 회원에게 멘션을 날릴 수 있습니다.
htps : // 아피. scck. 코 m / Change g / 2017-09-te-o-o-no-t-use r name s
여기서 채널의 멤버 ID를 얻을 수 있습니다.
htps : // 아피. scck. 코 m/메조 ds/우세 rs.ぃ st / st
아마존 람다 측
name.json 만들기
담당자의 이름, 전체 이름 모두 대응할 수 있도록, 모두 준비합니다.
[
{ "name" : "AA", "full_name" : "AABB", "slack_name" : "aabb" },
{ "name" : "CC", "full_name" : "CCDD", "slack_name" : "ccdd" },
and more...
]
index.js 만들기
//require
var Alexa = require('alexa-sdk');
var slackjson = require('./slack.json');
var namejson = require('./name.json');
var rp = require('request-promise');
기본 프레임은 'skill-sample-nodejs-trivia'를 참조하면 된다.
학생 시간의 예
var firstHandlers = Alexa.CreateStateHandler(STATUS.FIRSTMODE, {
"Unhandled": function(){
...
},
"GetAnswerIntent": function (){
....//約束のある方
},
"GetAnswerFromStudentIntent": function (){
studentRequest.call(this, false);
rp(options).then((response) => {
this.emit(':tell', '担当者に伝えました、少々お待ち下さい');
}, (error) => {
this.emit(':tell', '通信失敗しました,もう一度お願いします');
});
},
"GetAnswerFromDeliveryIntent": function (){
....//配送業者
},
"AMAZON.StopIntent": function(){
this.emit("stop");
}
});
function studentRequest(frist) {
var to_user_message = "<@slackid> 面接の学生がきました。"
options = {
method: 'POST',
uri: slack_webhook,//先のslack_webhook
body: {
text: to_user_message
},
json: true
};
}
slack에 post하는 내용은, Incoming WebHooks를 설정할 때의 Setup Instructions를 참조하면 좋다
위의 작업이 끝나면 zip 파일을 만들고 lambda에 업로드하여 테스트 clear라면 완성입니다!
엄청 빠진 곳
첫 번째 게시물을 작성하는 방법:
"GetAnswerFromStudentIntent": function () {
studentRequest.call(this, false);
rp(options); //ここでpost
this.emit(':tell', '担当者に伝えました、少々お待ち下さい');
},
이 글을 쓰면 post 응답이 반환되기 전에 this.emit()
를 실행하고 심각한 때에는 이전에 시작한 스킬의 응답을 emit하기도 했습니다.
검색한 결과 다음과 같은 문제를 발견했습니다.
아무래도 비동기 처리를 하는 것이 원인인 것 같습니다.
요약
JavaScript와 Lambda를 처음 만졌는데, 생각보다 재미있었습니다.
다음 목표는 slack message button을 추가하여 담당자가 대응한 것을 확인할 수 있는 느낌으로 하고 싶습니다.
API Gateway로 만들 수 있는 것 같기 때문에, 조사해 보겠습니다.
Reference
이 문제에 관하여(amazon echo로 회사 접수 시스템을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ikarosu_chihaya/items/5f49ee55508e66e381fd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)