alexa-app를 사용하여 alexa 사용자 지정 기술 만들기 (보충)
소개
alexa-app에 대한 기사는 Express + alexa-app에서 lambda를 사용하지 않고 Alexa Skill을 만듭니다. 쪽이 상세하기 때문에, 만지지 않은 곳을 보충하는 형태로 써 보려고 생각합니다.
환경
인텐트란?
인텐트는 대화의 분류라고 생각합니다.
예로서 위와 같이
num
위치를 지정하여 읽는 "average"준비합니다.
alexa-app에서 구현
alexa.js
app.intent('average', { utterances: UTTERANCES.request.average }, averageResponse);
app.intent('averageAll', { utterances: UTTERANCES.request.average }, averageAllResponse);
app.intent('rbiAll', { utterances: UTTERANCES.request.average }, rbiAllResponse);
app.intent('eraAll', { utterances: UTTERANCES.request.average }, eraAllResponse);
app.intent()
의도 설정 예
'샘플 발화'에서 예상되는 호출을 설정합니다.
예 : 사용자가 "(웨이크 워드), 타율 전부"라고 말하면 이전
averageAllResponse
이 실행됩니다.의도로 값 받기
개발자 콘솔에서 설정
타율의
num
위치를 지정하여 성적을 읽는 처리num이라는 수치를 유저의 대화로부터 취득하기 위해서는 슬롯이라고 하는 설정이 필요합니다.
슬롯 타입이 「AMAZON.NUMBER」인 num이라는 슬롯을 만들면, 샘플 발화안에
{num}
라고 기술할 수 있게 됩니다.이와 같이 설정하면, 유저가 「타율의 8위는?」라고 질문하면(,)
average
인텐트에 해당하는 발화가 있었던 것과 8이라고 하는 수치를 프로그램이 취득할 수 있습니다.애플리케이션 측 구현
average 인텐트 시에 averageResponse가 발화합니다. 슬롯 값은
req.slots[設定したキーの名前].value
에서 얻을 수 있습니다. num
라고 정의했습니다.app.js
const averageResponse = (req, res) => {
var num = req.slots['num'].value
if(num <= 10){
res.say(num+"位<break time='100ms'/>"+json['averageTop10'][num - 1]['name']+':'+json['averageTop10'][num - 1]['average']).shouldEndSession(false)
}else{
res.say("ごめんなさい。<break time='100ms'/>"+num+"は指定できません。<break time='100ms'/>10以下の順位を指定してください").shouldEndSession(false);
}
}
SSML
음, res.say()
에서 익숙하지 않은 HTML 태그와 같은 것이 나왔습니다. 이것은 SSML이라는 음성 독서를 강조하는 언어입니다. HTML처럼 태그로 문자열을 둘러싸거나 잠시 멈추고 싶은 곳에 태그를 넣습니다.
알렉사 커스텀 스킬 초보자가 일부 빠진 점
heroku에 배포하면 오류 'missing certificate url'
issue에 올랐습니다.
app.jsvar app = express();
//----
//この間でapp.use()などを使ってはいけない
//----
alexa.express({
expressApp: app,
endpoint: '/alexa',
checkCert: true
});
alexa.express()에는 express의 인스턴스를 그대로 넘겨야 하는 것 같습니다.
실제 기계 테스트에서 기술이 나오지 않습니다.
개발한 Alexa Skill이 일본어판에 나오지 않는 경우
Alexa 개발자 계정의 빠짐
테스트 콘솔에서 두 자리 숫자를 얻을 수 없습니까?
이것은 정보가 나오지 않았지만, 어플리케이션 측에서 10 이하의 수치는 허용하고 있지만, 테스트 콘솔을 사용하면 10 이상의 수치를 취득할 수 없다고 하는 문제가 있었습니다.
JSON 입력을 보면 slots.num.value라는 속성이 없음을 알 수 있습니다. 실제 기계에서는 제대로 인식되었습니다.
Reference
이 문제에 관하여(alexa-app를 사용하여 alexa 사용자 지정 기술 만들기 (보충)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ckoshien/items/cf0cc8ab5f92020b6ece
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
heroku에 배포하면 오류 'missing certificate url'
issue에 올랐습니다.
app.js
var app = express();
//----
//この間でapp.use()などを使ってはいけない
//----
alexa.express({
expressApp: app,
endpoint: '/alexa',
checkCert: true
});
alexa.express()에는 express의 인스턴스를 그대로 넘겨야 하는 것 같습니다.
실제 기계 테스트에서 기술이 나오지 않습니다.
개발한 Alexa Skill이 일본어판에 나오지 않는 경우
Alexa 개발자 계정의 빠짐
테스트 콘솔에서 두 자리 숫자를 얻을 수 없습니까?
이것은 정보가 나오지 않았지만, 어플리케이션 측에서 10 이하의 수치는 허용하고 있지만, 테스트 콘솔을 사용하면 10 이상의 수치를 취득할 수 없다고 하는 문제가 있었습니다.
JSON 입력을 보면 slots.num.value라는 속성이 없음을 알 수 있습니다. 실제 기계에서는 제대로 인식되었습니다.
Reference
이 문제에 관하여(alexa-app를 사용하여 alexa 사용자 지정 기술 만들기 (보충)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ckoshien/items/cf0cc8ab5f92020b6ece텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)