チュートリアル4: エンドツーエンド通信をする

このチュートリアルでは、エンドツーエンド通信を行います。 送信側のエッジデバイスから、intdash Edge Agent 2とintdashサーバーを経由して、受信側のエッジデバイスまでエンドツーエンドコールを届けます。

../_images/tutorial-4.svg

図 6 チュートリアル4(エンドツーエンド通信をする)

準備するもの

注釈

このチュートリアルでは、コール送信用エッジとコール受信用エッジの合計2つのエッジを使用します。

このチュートリアルを実行するには以下が必要です。

  • intdash Edge Agent 2をインストール済みのエッジデバイス2つ

  • 接続先のintdashサーバーのホスト名(例:xxxxx.intdash.jp)

  • プロジェクトUUID

  • コール送信用エッジデバイスに割り当てるエッジUUIDとクライアントシークレット

  • コール受信用エッジデバイスに割り当てるエッジUUIDとクライアントシークレット

  • grpcurl の実行バイナリ(インストールの方法はgrpcurlのREADME.mdにある Installation を参照してください。)

エッジUUIDとクライアントシークレットは、ウェブブラウザーでintdashにログイン後、My Pageで発行することができます。 エッジは使用するプロジェクトに所属させておいてください。

接続先サーバーを設定する

コール送信用エッジでの操作

注釈

デーモン(intdash-agentd)の自動起動が行われない環境(Docker Hubで公開されているUbuntuなど)をご使用の場合は、 sudo /etc/init.d/intdash-agentd start でデーモンを起動してから以下の操作を行ってください。

intdash-agentctl configコマンドを使って接続先サーバーと認証情報を設定します。

$ intdash-agentctl config connection --modify '
    server_url: https://xxxxxx.intdash.jp
    project_uuid: 00000000-0000-0000-0000-000000000000
    edge_uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    client_secret: f1OMTtns..........................JhvNgPJFRk.EXAMPLE
  '

--modify に続く引数はYAML形式の文字列です。あらかじめ準備した接続情報を使用してください。

キー

入力する値

server_url

intdashサーバーのホスト名

project_uuid

使用するプロジェクトのUUID

edge_uuid

コール送信用エッジのUUID

client_secret

コール送信用エッジのクライアントシークレット

注釈

YAML形式ではなくJSON形式で設定を与えたい場合は、configコマンドの後に -j を指定してください。

$ intdash-agentctl config -j connection --modify '{
    "server_url": "https://xxxxxx.intdash.jp",
    "project_uuid": "00000000-0000-0000-0000-000000000000",
    "edge_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "client_secret": "f1OMTtns..........................JhvNgPJFRk.EXAMPLE"
  }'

注釈

intdash-agentctlコマンドの使用方法は -h オプションにより確認できます。 コマンドごとに異なる情報が表示されます。

$ intdash-agentctl -h
$ intdash-agentctl config -h
$ intdash-agentctl config connection -h

コール受信用エッジでの操作

intdash-agentctl configコマンドを使って接続先サーバーと認証情報を設定します。

$ intdash-agentctl config connection --modify '
    server_url: https://xxxxxx.intdash.jp
    project_uuid: 00000000-0000-0000-0000-000000000000
    edge_uuid: yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
    client_secret: h7MWjrO..........................XdVdm0Nbs6.EXAMPLE
  '

--modify に続く引数はYAML形式の文字列です。あらかじめ準備した接続情報を使用してください。

キー

入力する値

server_url

intdashサーバーのホスト名(コール送信用エッジで設定したのと同じ値)

project_uuid

使用するプロジェクトのUUID(コール送信用エッジで設定したのと同じ値)

edge_uuid

コール受信用エッジのUUID

client_secret

コール受信用エッジのクライアントシークレット

コールの受信を行う

E2Eコーラーを起動する

コール受信用エッジでの操作

エンドツーエンド通信を行うには、E2Eコーラーを起動する必要があります。

以下のコマンドを実行してE2Eコーラーを起動します。

$ intdash-agentctl run

これにより、E2Eコーラーが持っているgRPCサーバーがポート50052で起動します。

コールを受信待ちする

コール受信用エッジでの操作

grpcurlを使用して、E2Eコーラーの ReceiveCalls メソッドをコールします。 ReceiveCalls はエンドツーエンドコールの受信を指示するメソッドです。

$ grpcurl -plaintext 127.0.0.1:50052 agent.e2e.E2ECall/ReceiveCalls

注釈

grpcurlのフラグについては grpcurl -help で確認できます。

コールの送信を行う

E2Eコーラーを起動する

コール送信用エッジでの操作

以下のコマンドを実行してE2Eコーラーを起動します。

$ intdash-agentctl run

これにより、E2Eコーラーが持っているgRPCサーバーがポート50052で起動します。

コールを送信する

コール送信用エッジでの操作

grpcurlを使用して、E2Eコーラーの SendCall メソッドをコールします。 SendCall はエンドツーエンドコールの送信を指示するメソッドです。

$ grpcurl -plaintext -d '{
  "destination_node_id": "731e9fbd-ec9b-4c52-b959-44f427e03dbf",
  "name": "call",
  "type": "bytes",
  "payload": "aGVsbG8="
}' 127.0.0.1:50052 agent.e2e.E2ECall/SendCall

このコマンドにより以下の内容のエンドツーエンドコールが送信されます。 SendCall メソッドの詳細については、 Agent E2E Call API を参照してください。

キー

入力する値

destination_node_id

送信先エッジのUUID

name

名称

type

payload

base64変換したペイロード

重要

payloadにbase64変換が必要な理由

SendCall メソッドのリクエストパラメーターとなるメッセージ SendCallRequest では、payloadはbytes型のフィールドとして定義されています。

grpcurlのデフォルト設定では入出力はJSON形式ですが、 gRPCメッセージのJSONへのマッピング に従うと、bytes型はbase64変換を行う必要があります。

そのため、上記のようにpayloadはbase64変換を行ってからJSONに含めています。

受信したコールを確認する

コール受信用エッジでの操作

コールの受信待ちを行なっているgrpcurlコマンドの標準出力を確認します。

$ grpcurl -plaintext -d "{}"  127.0.0.1:50052 agent.e2e.E2ECall/ReceiveCalls
{
  "callId": "f4243196-fc3f-4652-b216-578fbf6acdca",
  "sourceNodeId": "9f9391de-7277-40b9-bd88-78d4065c6869",
  "name": "call",
  "type": "bytes",
  "payload": "aGVsbG8="
}

受信したコールの文字列が出力されています。

確認が済んだら、 Ctrl+Cを押して、grpcurlを終了します。

コール受信用エッジでの操作

intdash-agentctl run を実行したターミナルでCtrl+Cを押して、intdash-agentctl runを終了します。

コール送信用エッジでの操作

intdash-agentctl run を実行したターミナルでCtrl+Cを押して、intdash-agentctl runを終了します。