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);
    })


  • administrators

    @Google-Homer さん

    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);

    })


  • administrators

    @Google-Homer さん

    なるほど、サーバーレス系でレスポンス返すと動かないという問い合わせをよく受けるので、そちらかと思ってしまいました。

    無事できたようで良かったです!


 

Recent Projects

  • @nak435 かしこまりました。よろしくお願いします。

    read more
  • @Yuki-Sato さん、

    外部の3.3vを使うとはいえ普通にvccやgndを供給して問題なくうごくのであれば、弊社での動作確認後Flick Hatのライブラリとして公開できればと思っているのですがいかがでしょう。

    今週末に確認しますので、お待ちください。

    read more
  • @nak435 時間がかかってすいません、

    なんとか3.3vをgndにつないでFlick Largeを動かしたかったのですが、うまく動かすことができなかったです。
    3.3vをgndを繋がずに接続するというのはライブラリで推奨して伝えることは難しいと思ってます。

    Flick LargeでなくFlick Hatの方で、外部の3.3vを使うとはいえ普通にvccやgndを供給して問題なくうごくのであれば、弊社での動作確認後Flick Hatのライブラリとして公開できればと思っているのですがいかがでしょう。

    よろしくお願い致します。

    read more
  • @nak435 ありがとうございます。
    接続は3.3vのgnd以外同じでした。
    エラーはそのせいかもしれませんが、しかし電気的にはgndを繋がない場合3.3vとしてうまく供給できないはずなのでそこが不思議です。

    教えていただいたプログラムの部分を修正して試してみたいと思います。
    また少し時間がかかりそうなのですが、早めに試したいと思います。

    引き続きよろしくお願い致します。

    read more