obnizのフォーラムは新しいシステムに移行しております。
新しいフォーラムはこちらになりますLINEハンズオンのRunKitで、起動時単発処理して終了する方法
-
LINEでのハンズオンのRunkitのサンプルを見て下記のコードを書きました。起動されたらサーボを動かして「はい」と発話して直ちに終了させるには、どのように書けばよいでしょうか?
//■アプリ起動時の応答
.onLaunchRequest(async responseHelper => {
responseHelper.setSimpleSpeech({
lang: 'ja',
type: 'PlainText',
value:はい。
,
});
let obniz = new Obniz(yourObnizId);
let connected = await obniz.connectWait({ timeout: 2 });
let Servo1 = obniz.wired('ServoMotor', { gnd: 0, vcc: 1,signal: 2});
Servo1.angle(110);
await obniz.wait(500);
Servo1.angle(90);
})
-
LINEハンズオンの資料を活用してくださりありがとうございます
Runkitを使われてると思いますが、RunkitやAWS Lambdaなどのサーバーレスは、レスポンスを返すとそこで処理を止めてしまうという特徴があります。
そのため、
responseHelper.setSimpleSpeech()
にてレスポンスを返してしまっているので、それより後ろのコードが実行されず、強制終了されてしまっています。responseHelper.setSimpleSpeech()
をServo1.angle(90)
よりも後ろに持って来ていただければ動くかと思います。
そちらで試していただけますか?
-
ありがとうございます。
現状のコードのままでも処理は止まることなく、レスポンス発話とサーボ両方動作します。やりたかったのは、Clovaに戻った後に発話入力待ちにせずSkillを終了させる事でした。下記1行追加で、自己解決しました。(意味は解ってませんが・・)
responseHelper.responseObject.response.shouldEndSession = true;
//■アプリ起動時の応答
.onLaunchRequest(async responseHelper => {
responseHelper.setSimpleSpeech({
lang: 'ja',
type: 'PlainText',
value:っ。
,
});
responseHelper.responseObject.response.shouldEndSession = true;
let obniz = new Obniz(yourObnizId);
let connected = await obniz.connectWait({ timeout: 5 });
let Servo1 = obniz.wired('ServoMotor', { gnd: 0, vcc: 1,signal: 2});
Servo1.angle(110);
await obniz.wait(500);
Servo1.angle(90);})
-