Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/morishin/sagyoipu
https://github.com/morishin/sagyoipu
Last synced: 23 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/morishin/sagyoipu
- Owner: morishin
- Created: 2020-04-15T12:53:11.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-08-14T11:23:40.000Z (over 3 years ago)
- Last Synced: 2024-05-02T02:13:54.942Z (7 months ago)
- Language: TypeScript
- Homepage:
- Size: 1.49 MB
- Stars: 7
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# sagyoipu
## sagyoipu-client
Web UI を持つフロントエンドアプリケーション。Firestore から Zoom ミーティングの状態を取得して表示している。
### Setup
```sh
yarn install
yarn run dev
```## functions
HTTP トリガで Zoom からの Webhook を受け取り、Firestore のデータを更新する Cloud Function。
### Setup
```sh
yarn install
```### Deploy
```sh
firebase deploy --only functions
```## プロジェクトの初期セットアップ
やったことのメモ
### 1. Zoom アプリの作成
https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-jwt-app に従い Zoom アプリを作成し、App Credentials を発行する。
また https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-jwt-app#features に従い Webhook の登録をする必要がある。
- Participant/Host joined meeting
- Participant/Host left meetingのイベントを選択し、`Event notification endpoint URL` にはデプロイした Cloud Functions の URL を指定する。
Webhook イベントは全てのミーティングに関するイベントが飛んでくるので、Cloud Function 側でさぎょイプに登録したミーティング ID に関するイベントかどうかを見てハンドリングしている。
### 2. Zoom ミーティングの用意
App Credentials を使って Zoom API を叩き、
- さぎょイプで用意する Zoom ミーティングの数だけライセンスユーザーを作成
- ライセンスユーザーをホストにした Zoom ミーティングを作成する。Zoom の仕様で一人のユーザーは同時に複数の進行中ミーティングのホストになれないため、一人のユーザーに対して一つのミーティングにする必要がある。
作成手順の詳細
----
cURL で API リクエストを叩くのはちょっと大変なので https://github.com/hintmedia/zoom_rb を使うと楽。
```ruby
require 'zoom'
Zoom.configure do |config|
config.api_key = '***'
config.api_secret = '***'
end
client = Zoom.new
```#### ユーザー作成
`custCreate` は ID/Password でログインできないユーザーを作るオプション。ドキュメントにはこのオプションを使うなら問い合わせてくれって書いてあるけど、実は普通に使えて、[フォーラム](https://devforum.zoom.us/t/custcreate-available-to-pro-accounts-now/6831/3)を見るとドキュメントが古いことがわかる。
```ruby
client.user_create(
action: 'custCreate',
first_name: 'Sagyoipu',
last_name: 'Host',
email: "[email protected]",
type: 2
)
```#### ミーティング作成
`start_time` は現在時刻より前ならいつでも。
```ruby
c.meeting_create({
topic:'さぎょイプ',
type: 2,
user_id: '<上で作ったユーザーのID>',
settings: {
joine_before_host: true
},
start_time: '2020-03-16T10:00:00Z'
})
```このユーザー作成とミーティング作成を部屋の数だけ行い、作成したミーティングの ID (数字) を下記の手順で `functions:config:set` する。
----
### 3. Firebase プロジェクトの作成
Firebase の Web コンソールからポチポチとプロジェクトを作成する。Zoom の Webhook はたくさん飛んできて無料プランだと Cloud Functinos の Rate Limit に引っかかってしまうため、Blaze プランにアップグレードしておくと良い。おそらく無料枠に収まるはず。
また、さぎょイプで利用する Zoom ミーティングの ID を `functions:config:set` する必要がある。
設定の例
```sh
firebase functions:config:set \
meeting_ids.0="12345678" \
meeting_ids.1="23456789" \
meeting_ids.2="34567890"
```