EduTech & AI 인공지능 & IT관련 소식

알렉사 스킬에서 xAPI 문 전송 본문

Tech./xAPI

알렉사 스킬에서 xAPI 문 전송

Edu&Tech 2018. 3. 21. 14:57

Alexa는 Echo 장치에서 사용되는 Amazon의 음성 기반 assistant입니다. 사용자는 음성 기반 인터페이스를 사용하여 다양한 서비스와 완전히 상호 작용할 수 있습니다. 예를 들어, "Alexa, 오늘 날씨가 어떨까요?"라고 말할 수 있습니다. 그러면 장치는 해당 지역의 일기 예보를 알려줌으로써 응답합니다. 실제로 꽤 멋지 네요.

또한 학습 및 성과 지원 활동을 제공 할 수있는 새로운 기회를 창출합니다. 평소와 마찬가지로 사용자가 해당 활동을 수행하는 방식을 추적하고자합니다. 다시 한번, xAPI 도와줘! 웹 페이지에서 퀴즈 응답이나 다른 상호 작용을 위해 xAPI 문을 보내는 것과 마찬가지로 Alexa Skills 또는 다른 상상할 수있는 것에서 퀴즈 성능을 캡처 할 수 있습니다. 트리거링 이벤트 (질문에 응답하거나 특정 기술을 요청하는 등)가있는 한 성명을 보낼 수 있습니다. 이 간단한 퀴즈 예제에서는 프로세스를 보여줍니다.

내가 토론 할 내용과 논의하지 않을 내용

이 기사에서는 Alexa 기술에서 xAPI 문을 작성하고 전송하는 단계에 대해 설명합니다. 또한 Node.JS에 대한 xAPI ADL 래퍼를 얻기 위해 다른 명령을 실행해야하기 때문에 환경 설정에 대해 약간 의논 할  입니다.

스킬 설정 (슬롯, 인 텐트 만들기 등) 또는 기술 작동 방식에 대한 자세한 설명 은 하지 않겠 습니다. 우리가 진술서를 보내기를 원하기 때문에 중요한 몇 가지를 언급 할 것입니다. 하지만 그렇지 않으면 알렉사 스킬을 만들고 설정하는 기본 사항을 알고 있다고 가정합니다. 모르는 사람 은 시작하기 위해 알아 두어야 할 모든 내용에 대한 자습서 를 제공합니다 .

환경 설정하기

이 기사에는 기술을로드하고 마을로 이동하는 데 필요한 모든 것이 있습니다. 하지만, 처음부터 다시 빌드하고 싶다면 몇 가지 사항이 필요합니다. 그들은 쉽게 습득됩니다. 사실 대부분의 경우 두 가지 명령이 있습니다.

소스 파일에 대한 디렉토리를 작성하십시오. 명령 행에서 해당 디렉토리로 이동하십시오. 가장 먼저 필요한 것은 Amazon의 자습서 사이트에서 다운로드 한 Alexa SDK입니다. 다음 명령을 입력하여 설치할 수 있습니다.

  1. npm install --save alexa-sdk  

그러면 Alexa 음성 서비스와 상호 작용하는 데 필요한 파일이 설치됩니다.

ADL xAPI 노드 랩퍼를 사용하려면 위의 명령과 함 2이 명령을 _ 행해야합니다. https://github.com/adlnet/xAPIWrapper 에서 온라인으로 노드 래퍼를 찾을 수 있습니다 .)

  1. npm install adl-xapiwrapper  

그러면 node.js에 대한 xAPI 랩퍼가 설치됩니다. 이 파일을 설치하면 xAPI 문을 훨씬 쉽게 작성하고 보낼 수 있습니다. 우리가 코드를 보면서 그 과정을 거치도록하겠습니다. 한 가지 알아 두어야 할 점은 대부분 xAPI와 마찬가지로 4 줄의 코드로 돌아갑니다 나는 그것을 많이 말한다. 그러나 사실입니다. xAPI는 대부분의 사람들이 생각하는 것보다 훨씬 쉽습니다. 유용한 예를 보려면 이전 기사에서 xAPI 문 전송에 대한 일부 기사 (xAPI 문과 함께 비디오 상호 작용 추적 , xAPI는 비디오에서 배운 내용 , e 러닝 디자이너가 알아야 할 유용한 xAPI 쿼리를 알려줄 수 있음)를 참조하십시오 .

퀴즈 만들기

OK,이 퀴즈는 짜증납니다. 알아. 빅 벅 버니 (Big Buck Bunny) 비디오의 처음 16 초 동안 무엇을 보았는지에 관한 하나의 질문 입니다. 이 아이디어는 xAPI 문 프로세스를 분리하여 작동 방법을 보여줍니다. 코드를 살펴 보겠습니다.

  1. 'LaunchRequest': function() { //Executes when a new session is launched  
  2.     this.emit('LaunchIntent');  
  3. },  
  4.   
  5. 'LaunchIntent': function() { // Ask the user his/her name  
  6.     this.emit(':ask', "Hello!  Welcome to the DevLearn example quiz!  " +  
  7.         "This quiz will test your knowledge of the Big Buck Bunny video.  " +  
  8.         "Before we begin, may I ask your name?");  
  9. },  

"Alexa, 내 스킬의 이름이 무엇이든 열어 라"라고 말하면 스킬의 이름을 불러올 때 LaunchRequest 기능이 실행됩니다. 이 경우 LaunchIntent 함수가 실행됩니다.

LaunchRequest 함수는 기술을 소개합니다. 여기에 사용자의 이름도 묻습니다. 잠시 후 xAPI 문의 이름을 사용합니다.

다음 코드 비트 인 NameIntent 함수는 사용자가 자신의 이름을 말하면 호출되어야합니다. 가장 먼저하는 일은 사용자에게 다음과 같은 질문을하는 것입니다.

이론적으로 사용자는 선택한 답변의 번호를 알려줍니다. 사용자가 숫자를 말할 때, 다음 AnswerIntent 함수가 호출됩니다. 나는 그 함수의 전체 코드를 여기에 게시하지 않을 것이다. 그러나 우선 선택한 답안을 설정하기 위해 스위치 케이스를 사용합니다. 답이 맞거나 틀리거나 학생에게 주어질 메시지를 기술 자체의 속성에 지정합니다.

그리고 지금 ... 재미있는 비트! 먼저 다음 문을 정의합니다.

  1. var stmt = {  
  2.     "actor": {  
  3.         "mbox": "mailto:" + this.attributes['FirstName'].toLowerCase() + "@devlearn16.com",  
  4.         "name": this.attributes['FirstName'],  
  5.         "objectType": "Agent"  
  6.     },  
  7.     "verb": {  
  8.         "id": "http://adlnet.gov/expapi/verbs/answered",  
  9.         "display": { "en-US": "answered" }  
  10.     },  
  11.     "object": {  
  12.         "id": "http://omnesLRS.com/xapi/quiz_tracker",  
  13.         "definition": {  
  14.             "name": { "en-US": "xAPI Video Quiz" },  
  15.             "description": { "en-US": "Correlating quiz answers to video consumption" }  
  16.         },  
  17.         "objectType": "Activity"  
  18.     },  
  19.     "result": {  
  20.         "response"  : this.attributes['myAnswer'],  
  21.         "extensions": {  
  22.             "http://example.com/xapi/location" : "15.6"  
  23.             }  
  24.     }  
  25. };  

일반적인 JavaScript에서와 마찬가지로 FirstName 속성을 추가하여 배우 mbox 문자열을 작성하는 것입니다. 응답은 스킬의 myAnswer 속성을 사용하는 키쌍 일뿐입니다. 다시 말하지만, 자바 스크립트를 사용하는 일반적인 웹 페이지에서이 작업을 수행하는 것과 매우 유사합니다. 하드 코드 된 값을 환경 변수 또는 프로세스를 자동화하는 데 필요한 다른 값으로 대체 할 수 있습니다.

다음 단계는 LRS 엔드 포인트와 신임 정보를 설정하는 것입니다.

  1. // Set the LRS endpoint, username and password  
  2. var conf = {  
  3.     "url" : "https://lrs.adlnet.gov/xapi/",  
  4.     "auth" : {  
  5.         user : "xapi-tools",  
  6.         pass : "xapi-tools"  
  7.     }  
  8. };  

다음으로 Alexa 스킬에 방금 설정 한 LRS를 사용하도록 알려줍니다.

  1. // Tell alexa to use the LRS defined above  
  2. var LRS = new ADL.XAPIWrapper(conf);  
  3. Now we send the statement!  
  4. LRS.sendStatements(stmt, (err, resp, bdy) => {  
  5.     console.log('stmnt sent: ' + resp.statusCode);  
  6.     this.emit(':tell', this.attributes['message']);  
  7. });  

여기에있는 모든 것을 살펴 보겠습니다. 그것은 당신이 생각하는 것 이상입니다.

먼저 LRS.sendStatement를 호출합니다. 우리가 보내는 인수는 명령문과 콜백 함수 입니다. 기본적으로 콜백 함수는 호출 함수가 수행하려고하는 모든 작업을 완료하면 실행되는 함수입니다. 이 경우 명령문이 보내지면 "콜백"기능이 호출됩니다. 여기서는 일반적인 익명 함수를 호출하지 않기 때문에 또 다른 꼬임을 추가 합니다 . 화살표 함수를 사용하고 있습니다 . arrow 함수는 자신을 바인딩하지 않습니다. 즉 범위 문제를 다루지 않고도 스킬의 속성을 끌어내는 것이 더 쉽다는 의미입니다.

그러나 가장 큰 문제는 타이밍 입니다. 문을 보내고 문 ID가 반환되기를 기다리는 동안 Alexa 기술에서 2 ~ 3 초 이상 걸릴 수 있습니다. 문제는 스킬이 sendStatement 함수를 실행 한 다음 문 ID가 반환되기 전에 나머지 코드로 이동하여 종료한다는 것입니다. 따라서 콜백 함수의 일부는 마지막 this.emit입니다. 이 경우, 우리는 : tell은 시스템에 더 이상의 상호 작용이 기대되지 않는다는 것을 알려줍니다. 그러면 세션이 닫히고 기술이 종료됩니다. 이 방법은 기본적으로 명령문이 전송되고 명령문 ID가 반환되고 콜백이 호출 될 때까지 세션을 열린 상태로 유지합니다.

Aaaaannnd … it’s just that easy.

좋아, 그렇게 될 수 있었던 것처럼 완전히 똑바로는 아니야. 하지만 실제로는 하나 또는 두 개의 캐치 만 있으면 스킬 내에서 xAPI 문을 보내는 것이 매우 쉽습니다. 또한 성능 지원, 교육 또는 간단한 가끔 미소 지음 알림을 위해 Alexa를 사용할 수있는 가능성 이 많이 있습니다.

Don’t do as I do … here, anyway

Alexa 기술은 대부분의 JavaScript 프로그램이 실행되는 방식과 같이 선형 방식으로 실행되지 않습니다. 비동기식으로 물건을 볼 때조차도 Alexa는 같은 방식으로 작동하지 않습니다. 다른 함수는 실행에 따라 호출되지 않습니다. 그들은 사용자가 말하는 것을 기반으로 호출됩니다. 따라서이 예에서 스킬이 사용자 이름을 묻는 경우 사용자가 "3"이라고 말하면 스킬은이를 듣고 번호 (퀴즈 질문에 대한 대답)로 해석 한 다음 명령문을 보냅니다 FirstName 특성은 정의되지 않았습니다. 이 예에서 나는 진술서를 보내는 방법을 격리하고 설명하기 위해 가능한 한 많이 제거했다. 현실 세계에서는 이와 같은 일이 발생하지 않도록 오류 허용 오차 및 오류 검사를 추가해야합니다. 또는 내가 무시하거나 잊어 버렸거나 의도적으로 제외시킨 다른 여러 가지.

Now it’s your turn!

그래서 xAPI 문을 설정하고 보내는 방법을 보여 줬습니다. 자, 그걸로 뭘 할 수 있는지 보여줘! Alexa를 사용하여 학생, 직원, 동료 및 기타 모든 사람들을 지원할 수있는 모든 방법을 보여주십시오. 그리고 궁금한 점이 있으면 나를 찾을 곳을 알아요!

'Tech. > xAPI' 카테고리의 다른 글

xAPI Verbs (활용되는 동사정보입니다.)  (0) 2018.02.12
xAPI : c# 샘플코드 입니다.  (0) 2018.02.12
xAPI - Yetanalytics 활용 사례  (0) 2018.02.12
xAPI Profiles 이란?  (0) 2018.02.02
xAPI 샘플코드  (0) 2017.12.21
Comments