protected override async Task OnIntentRequestAsync(Intent intent, Session session, CancellationToken cancellationToken) { switch (intent.Name) { case "Clova.GuideIntent": Response .AddText("LINEに入力をした内容をしゃべります。準備はいいですか?") .KeepListening(); break; case "Clova.YesIntent": case "ReadyIntent": // 友だち追加チェック try { await LineMessagingClient.GetUserProfileAsync(session.User.UserId); } catch { Response.AddText("連携するLINEアカウントが友だち追加されていません。" + "Clovaアプリの本スキルのページから、連携するLINEアカウントを友だち追加してください。"); break; } await DurableClient.StartNewAsync(nameof(ClovaFunctions.WaitForLineInput), session.User.UserId); Response.AddText("LINEに入力をした内容をしゃべります。好きな内容をLINEから送ってね。"); // 無音無限ループに入る KeepClovaWaiting(); break; case "Clova.PauseIntent": // 無限ループ中の一時停止指示に対し、スキル終了をする await DurableClient.TerminateAsync(session.User.UserId, "intent"); Response.AddText("腹話術を終了します。"); break; case "Clova.NoIntent": case "Clova.CancelIntent": case "NotReadyIntent": // オーケストレーターが起動していないなら終了 var status = await DurableClient.GetStatusAsync(session.User.UserId); if (status?.RuntimeStatus == OrchestrationRuntimeStatus.ContinuedAsNew || status?.RuntimeStatus == OrchestrationRuntimeStatus.Pending || status?.RuntimeStatus == OrchestrationRuntimeStatus.Running) { Response.AddText("腹話術を終了します。"); } else { KeepClovaWaiting(); } break; } }
protected override async Task OnPlayPausedEventAsync(Event ev, Session session, CancellationToken cancellationToken) { await DurableClient.TerminateAsync(session.User.UserId, "PlayPaused"); Response.AddText("腹話術を終了します。"); }