(obniz x LINE Clova) Clova RC code

node v8.17.0
version: 3.3.0
endpointsharetweet
const Obniz = require('obniz'); const express = require('@runkit/runkit/express-endpoint/1.0.0'); const clova = require('@line/clova-cek-sdk-nodejs'); const app = express(exports); const clovaExtensionId = 'YOUR_CLOVA_EXTENTION_ID'; const yourObnizId = 'YOUR_OBNIZ_ID'; // 使い方のテンプレート const TEMPLATE_INQUIRY = '前へ進め などを指示してください'; //obnizを動かす部分 async function moveTo(direction) { let obniz = new Obniz(yourObnizId); let connected = await obniz.connectWait({ timeout: 5 }); if (!connected) { // 5秒探してobnizが見つからない(オフラインの場合)は何もしない return false; } let motorA = obniz.wired('DCMotor', { forward: 0, back: 1 }); motorA.power(50); let motorB = obniz.wired('DCMotor', { forward: 2, back: 3 }); motorB.power(50); if (direction === '前') { motorA.move(true); motorB.move(true); } else if (direction === '後ろ') { motorA.move(false); motorB.move(false); } // 1秒だけ動かす await obniz.wait(1000); motorA.stop(); motorB.stop(); // モーターを止めない場合,obniz.waitからの3行を消して次の行を入れる // これはコネクションが切断されても状態を維持するコマンド(モーターへの出力が維持される) // obniz.resetOnDisconnect(false); // コネクションを切断する obniz.close(); return true; } //clovaとの連携部分 const clovaSkillHandler = clova.Client.configureSkill() //アプリ起動時の応答 .onLaunchRequest(responseHelper => { responseHelper.setSimpleSpeech({ lang: 'ja', type: 'PlainText', value: `「クローバー・ラジコン」が起動されました。${TEMPLATE_INQUIRY}`, }); }) //各インテントごとの対応 .onIntentRequest(async responseHelper => { const intent = responseHelper.getIntentName(); console.log(`intent : ${intent}`); if (intent === 'MoveIntent') { let slots = responseHelper.getSlots(); console.log(`slots : ${JSON.stringify(slots)}`); let direction = slots.DirectionSlot; console.log(`direction : ${direction}`); if (direction == null) { //応答する responseHelper.setSimpleSpeech({ lang: 'ja', type: 'PlainText', value: `${TEMPLATE_INQUIRY}`, }); return; } await moveTo(direction); //応答する responseHelper.setSimpleSpeech({ lang: 'ja', type: 'PlainText', value: `${direction}へ動きました`, }); } else if (intent === 'Clova.GuideIntent') { // ビルトインインテント。ユーザーがヘルプを呼び出した場合 //応答する responseHelper.setSimpleSpeech({ lang: 'ja', type: 'PlainText', value: TEMPLATE_INQUIRY, }); } else { // その他のインテントの場合 responseHelper.setSimpleSpeech({ lang: 'ja', type: 'PlainText', value: `意図しない入力です。${TEMPLATE_INQUIRY}`, }); } }) // スキルの終了リクエスト .onSessionEndedRequest(responseHelper => {}) .handle(); const clovaMiddleware = clova.Middleware({ applicationId: clovaExtensionId, }); app.post('/', clovaMiddleware, clovaSkillHandler);
Loading…

no comments

    sign in to comment