# チュートリアル

## 概要

Sora Cloud は WebRTC SFU Sora のクラウド版です。

## 用語

**組織 (Org)**
: Sora Cloud を契約する法人または団体に割り当てられる Sora Cloud を利用する際の単位です

**メンバー**
: 組織の中でアカウントを登録する個人です

**アカウント**
: メンバーのメールアドレス 1 つに対して 1 つのアカウントが作成されます

: 1 つの組織で最大 5 つのアカウントが登録できます

**API キー**
: Sora に接続する際に利用する JWT を作成するために必要なキーです

**プロジェクト (Project)**
: 複数の異なるサービスや検証環境など、利用状況を分けて管理する際の単位です

: 1 つの組織で最大 5 つのプロジェクトを作成できます

**プロジェクト ID**
: Sora に接続する際に利用するプロジェクト単位のユニークな ID です

**HTTP クライアント**
: [curl](https://curl.se/) などの CLI から利用可能なツールです

: このドキュメントでは API を実行する例で HTTP クライアントの [curl](https://curl.se/) を利用しています

: また、 curl の JSON レスポンスを整形するために、コマンドラインツール [jq](https://github.com/jqlang/jq) を利用しています

**Sora 開発ツール**

## Sora Cloud を利用する準備をする

### プロジェクトを作成する

管理コンソールから Projects タブをクリックし、
Create project ボタンを押し、プロジェクトを作成してください。

![image](https://i.gyazo.com/06a5f0458669ea2509080f55c87c2716.png)

プロジェクト名に好きな文字列を入力してください。ここでは HamHamHam としています。

![image](https://i.gyazo.com/97daee51bc80b761dfc1ba088880087a.png)

## Sora へ接続する

### 前提

ブラウザは最新のブラウザを利用してください。 Chrome や Edge をおすすめします。

### Sora 開発ツールを使った動作確認

プロジェクトの ... をクリックして Create Access Token をクリックしてください。

![image](https://i.gyazo.com/f98ab2e1baba285bdae6b9e4663a9909.png)

チャネル名に好きな文字列を入力してください。ここでは sora-devtools としています。

![image](https://i.gyazo.com/896bdfcb147e168ac8686ee5e7fc8839.png)

文字列を入力したら Create Access Token をクリックしてください。

![image](https://i.gyazo.com/ae346c5f841f8ec5d18dd487365aba14.png)

Sora DevTools の URL をクリップボードにコピーしたら、ブラウザに貼り付けてください。

![image](https://i.gyazo.com/a832740c092f2a173c0129740e43caa8.png)

あとは、connect を押すことで接続されます。もう一つタブを開いて同じように connect を押してください。
それぞれの音声や映像が配信されたら成功です。

> **注意**
>
> Sora 開発ツールの録画開始・停止やサイマルキャストの rid 切り替えなど、Sora API を利用する一部の機能は使用できません。

## 同時接続数を確認する

3 つの接続を維持したまま Sora Cloud の API で今どのくらいの同時接続数があるか確認してみます。

API キーはプロジェクトから ... をクリックして Edit Project をクリックしてください。

![image](https://i.gyazo.com/76acd683ffc648815b04454dc2f17bce.png)

Security の API キー (Primary API Key) からクリップボードにコピーして利用してください。

![image](https://i.gyazo.com/edc43949da40807a5291e676539dec9c.png)

```console
$ curl -sS \
    -X POST \
    https://api.sora-cloud.shiguredo.app/orgs/get-total-live-concurrent-connections \
    -H "Authorization: Bearer <API-KEY>" \
    | jq .
3
```

Sora Cloud で利用できる様々な API は [Sora Cloud API](sora_cloud_api.html) にありますのでご確認ください。

## Sora の API を利用する

```console
$ curl -sS \
    -X POST \
    https://api.sora-cloud.shiguredo.app/sora-api \
    -H "Authorization: Bearer <API-KEY>" \
    -H "x-sora-target: Sora_20201013.ListChannelConnections" \
    --json '{"channel_id":"sora-cloud@25PO5TGFD26VB62G7C7DFAAYGA4J3CJN"}' \
    | jq .
[
    {
        "audio": {
            "codec_type": "OPUS"
        },
        "bundle_id": "TP8RRG5SN54DD7VBMHZDB0SJW0",
        "channel_id": "sora-cloud@25PO5TGFD26VB62G7C7DFAAYGA4J3CJN",
        "client_id": "TP8RRG5SN54DD7VBMHZDB0SJW0",
        "connection_id": "TP8RRG5SN54DD7VBMHZDB0SJW0",
        "created_time": 1652944257911575,
        "created_timestamp": "2022-05-19T07:10:57.911575Z",
        "event_metadata": "REDACTED",
        "multistream": true,
        "role": "sendrecv",
        "session_id": "47Q2QVK9DD7DHCZ8W37NPJNADM",
        "simulcast": false,
        "spotlight": false,
        "video": {
            "bit_rate": 500,
            "codec_type": "VP9"
        }
    },
    {
        "audio": {
            "codec_type": "OPUS"
        },
        "bundle_id": "MHJ8PB68MD2FFB188AR8VT0S2M",
        "channel_id": "sora-cloud@25PO5TGFD26VB62G7C7DFAAYGA4J3CJN",
        "client_id": "MHJ8PB68MD2FFB188AR8VT0S2M",
        "connection_id": "MHJ8PB68MD2FFB188AR8VT0S2M",
        "created_time": 1652944261045734,
        "created_timestamp": "2022-05-19T07:11:01.045734Z",
        "event_metadata": "REDACTED",
        "multistream": true,
        "role": "sendrecv",
        "session_id": "47Q2QVK9DD7DHCZ8W37NPJNADM",
        "simulcast": false,
        "spotlight": false,
        "video": {
            "bit_rate": 500,
            "codec_type": "VP9"
        }
    }
]
```

## アプリケーション連携

Sora のドキュメントにアプリケーション連携チュートリアルがありますので、こちらをご確認ください。



### ウェブフック署名

Sora Cloud のウェブフックには署名が付与されています。
署名をチェックすることで Sora Cloud からのリクエストであることを確認することができます。

[署名](webhook.html#14b8f2) をご確認ください。
