あなたのスマートスピーカーはどうして何でもできるのですか?独自のスピーカーサービスを作成する方法

4798 ワード

スマートスピーカーがますます普及している現在、スピーカーをめぐるエコサービスもますます盛んになっており、開発者はどのようにしてスピーカーエコを抱擁し、自分の音声アプリケーションサービスを作ることができますか?私たちは京東小京魚を主とするプラットフォームを調査し、音声応用の実現方式を整理した.(原文住所:http://process-z.com/how_to_create_skill/)
音声アプリケーションはスキルとも呼ばれ、音声を核心とするインタラクティブなサービスを指し、以下を含む.
  • 「意図」は、技能の使用中にユーザが行うことができる操作
  • を表す.
  • 「話術」は、これらの意図
  • を呼び出すためにユーザが話せることを指定する.
    意図集合と話術集合のマッピング関係はインタラクティブモデルを形成した.
    意図
    定義:スキルの使用中にユーザーが実行できるアクションを表します.
    一般的なプラットフォームでは、開発者が選択できるようにプリセットの意図(操作)が提供されます.これは、一般的な機能を統一し、システムの一貫性を高めるためです.例えば、終了機能は、各サービスが終了する必要があるため、必須の意図である.もちろん、ユーザーはカスタムの意図を作成することもできます.
    話術
    定義:ユーザーが言えることを指定して対応する意図を命中します.
    例えば、天気を検索する機能(意図)を定義し、話術を定義することで、ユーザーがどのような言葉で天気を検索するかを定義することができます.以下の図では、異なる話術が同じ天気を検索する機能に命中することができます.
    スロットビット
    定義:操作を実行する前に取得する必要があるキーパラメータを指定します.
    ユーザがスキルを使用する場合、システムは、特定の値を返すためにユーザコマンドのパラメータを取得する必要があります.例えば、ユーザーが「北京の天気はどうですか?」と聞くと、「北京」は重要なパラメータであり、システムはクエリーの場所を取得して異なる情報を返す必要があります.これらの重要なパラメータは「スロット」で表します.
    スロットビットは、同じ特徴を有するフレーズのセットからなる集合である.時間、都市、数字など.プラットフォームは一般的に一般的なスロットタイプを提供し、開発者はスロットタイプをカスタマイズすることもできます.
    スロットビットは実際には特定のスロット値の集合であり,開発者がスロットビットをカスタマイズした後,このスロットビットのすべてのスロット値を定義する必要がある.
    音声インタラクティブモデル
    1つの完全な音声インタラクションモデルは、複数の意図を含み、各意図は複数の話術によってトリガーされ、各話術には複数のスロットビットが含まれ、各スロットビットの背後には1つのスロット値の集合が対応している可能性がある.
    +++
    音声サービスの設計方法
    ユーザがスマートデバイスに向かって話し,ある話術にマッチングできれば,システムはその後の意図に命中し,ユーザの話からスロット情報を解析する.例えばユーザーは「『航空旅』を開くと、明日北京から上海までの航空券を予約します」と言って、その中の「航空旅を開く」は航空旅という技能の触発話術で、システムはこの話が術後この技能で指令を解析することを認識します.
    あるスロットが必須であるが,ユーザの言うことからスロットを解析できない場合,開発者はスロットのセッションを構成してユーザに尋ねることができる.
    音声サービスは会話を通じてユーザーのニーズを実現し、以下のいくつかの設計原則がある.
  • 合理的な多輪対話関係
  • を設計する
  • 会話はコンテキスト関係
  • を考慮する必要がある.
  • 表現簡潔と文式完全
  • 可能な会話シーン
  • を上書きする
  • は、安定した対話モード
  • を提供する.
    +++
    スキルがどのように動作するか
    スキルを作成した後、ユーザーがスキルを使用する場合、オープンプラットフォームはユーザーのリクエストを解析し、POST方式でJSON形式のリクエストデータを開発者のスキルクラウドに送信する.開発者はデータプロトコルに従ってこのスキルのサービスプログラムを開発して論理処理を行い、JSON形式の応答データをオープンプラットフォームに返す必要がある.
    開発者は次の内容を準備する必要があります.
  • サービスエンドポイント、プラットフォームはこのエンドポイントにPOST要求を送信し、スキルのクラウドプログラムを呼び出す.
  • 関連アカウントは、スキルがユーザー登録後に使用される必要がある場合は、OAuth 2規格に基づくサービス側とビジネスデータインタフェースを構成する必要があります.

  • サービス・エンド・ポイント
    プラットフォームでは、「HTTPS」と「関数計算」の2つのエンドポイントタイプが一般的にサポートされています.
    HTTPS
    開発者がスキルのサービスプログラムを自分のサーバーまたはクラウドホストに配置する場合、HTTPSエンドポイントタイプを選択し、以下の情報を構成できます.
  • HTTPSエンドポイント、プラットフォームはこのサービスエンドポイントにPOST要求を送信し、スキルのサービスプログラムを呼び出す.
  • SSL証明書、プラットフォーム検証スキルのサービスエンドポイントは安全で信頼性があります.開発者は、サービス・エンド・ポイントが安全で信頼できることを検証するためのSSL証明書検証スキームを提供する必要があります.サービス・エンド・ポイントに信頼できる証明書発行機関の証明書がない場合は、開発者がx 509 public.pem形式の自己署名証明書を手動でアップロードする必要があります.
  • は署名を要求し、サービスエンドポイント検証要求は小京魚-skillオープンプラットフォームに由来する.これはオプションの構成項目です.開発者が要求に署名する必要があると選択した場合、プラットフォーム要求SkillのRequest Header(要求メッセージヘッダ)には、2つのフィールドRequest-Date(要求時間)とSkill-Taken(Skillオープンプラットフォーム暗号化後のToken)が追加されます.スキル・サービス側は、暗号化された式:—–Token=MD 5(RequestBodyのJSONコンテンツ+"#"+鍵+"@"+Request-Date)—–独自のTokenを計算します.次に、TokenとSkill-Tokenが一致しているかどうかを比較して、現在のリクエストが小京魚-skillオープンプラットフォームに由来しているかどうかを検証します.

  • 関数計算
    開発者はサーバ構成を管理する必要はなく、ネットワーク環境を構成する必要はなく、httpsドメイン名を申請する必要はありません.サードパーティインタフェース、データベースへのアクセスをサポートする.
    関連アカウント
    サービスにユーザーログインが必要な場合、プラットフォームとスキル開発者のサードパーティクラウドの間でアカウントバインドが必要です.アカウント関連の過程で、スキル開発者のサービスはプラットフォームサーバにアクセストークンをアイデンティティの唯一の識別として与える必要がある.アカウントの関連付けに成功すると、プラットフォームが開発者のサービスにアクセスすると、リクエストデータにこのアクセストークン(session.user.accessToken)が付きます.開発者は、このアクセストークンによって、ユーザが自分のアカウントシステムの合法的なアイデンティティであるかどうかを判定し、認証を完了することができる.
    サービスシステムは、OAuth 2.0に基づく標準インタフェースを提供する必要がある.ユーザーがAPPでこのスキルを有効にする場合、第三者アカウントにログインして関連付ける必要があります.
    サービステスト
    インタラクティブモデルとサービス側を設定すると、開発者はプラットフォーム上でデバッグを行い、ユーザー入力をシミュレートして各話術と機能をテストすることができます.
    +++
    インテリジェントホームコントロールサービス
    サービスの内容はインテリジェントな家具設備であり、ユーザーは音声制御ホーム設備の関連操作を使用することができる.この場合、開発者は一般的に音声インタラクティブモデルを作成する必要はない.プラットフォームはホーム制御の話術に対してすでに音声インタラクティブモデルがあるからだ.
    インテリジェントデバイスの制御には、このユーザーアカウントの下にあるインテリジェントデバイスのリストを取得するためにアカウントを関連付ける必要があります.授権方式は通常のスキルと一致しています.
    プラットフォームは一般的にスマートホームプロトコルを定義し、開発者はプロトコルに基づいて設備の操作を完了し、要求に応じて結果を返すだけでよい.京東IoTプラットフォームを例にとると、スマートホームプロトコルはheaderとpayloadから構成され、例は以下の通りである.
    {  
        "header": {  
            "namespace": "Alpha.Iot.Device.Control",  
            "name": "AdjustUpTemperatureRequest",  
            "messageId": "xxxxxxxxxxxxxxxxxxxx",  
            "payLoadVersion": "1",  
            "userId": "xxxxxxxxxxxxxxxxxxxx"  
        },  
        "payload": {  
            "accessToken": "access_token",  
            "deviceId": "device_id",
            "extensions": {  
      
            }    //       ,   extensions    
        }  
    }  
    

    Header
    その中でAlpha.Iot.Device.Control(デバイス制御)部分に注目する必要があり、プラットフォームはデバイス制御に関するパラメータを定義し、開発者はこの範囲内でデバイスの関連操作を実現することができる.
    (原文住所:http://process-z.com/how_to_create_skill/)