Webex Botの移管方法を聞いてみた

この記事は、Webex Advent Calendar 2021の21日目として投稿しています。
Webex Advent Calendar 2021: https://qiita.com/advent-calendar/2021/webex

# はじめに
昨今はBotをつかって自分の作りたいサービスをお手軽に作れる時代となりました。一方で、Botって作ったはいいけど、その後の管理はどうしたらいいの・・？ってお悩みはありませんか。今回は、Cisco Communityに投稿して得たBotの管理のTips（[Webex bot運用方法における仕様につきまして](https://community.cisco.com/t5/%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3/webex-bot%E9%81%8B%E7%94%A8%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E4%BB%95%E6%A7%98%E3%81%AB%E3%81%A4%E3%81%8D%E3%81%BE%E3%81%97%E3%81%A6/td-p/4461555)）をより多くの皆さんにも触れて頂けるよう、Cisco Webex アドベントカレンダーでもご紹介します:relaxed:
https://qiita.com/advent-calendar/2021/webex



## Webex Botとは
Webex Botは、[Webex for Developper](https://developer.webex.com/)サイトにログインしてから作成ができます。
このとき、Botはそのユーザの組織とユーザ配下に紐づくイメージです。Webex Control Hub組織内ユーザの異動や退職に伴い、ユーザに紐づくBotアカウントの管理は利用するサービスによっては考慮すべき大切なポイント:sparkles:ですよね。
![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/0284b066-a1f4-d296-66d6-07f89b9d0283.png)


## Cisco Communityに聞いてみた
ユーザがいなくなったらWebex Botの扱いってどうなるんだろう・・・？:thinking:という疑問がうまれたので、まずは、[Cisco Communityサイトの「DevNet & プログラマビリティ」](https://community.cisco.com/t5/devnet-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3/ct-p/jp-devnet)にBotの移管方法について相談してみました。
そこで案内された[Global Communityサイト](https://developer.webex.com/support)のSupport Portalより問い合わせを開始しました。投稿後、すぐに欲しい情報の回答をもらえたことが印象的でした:clap:
![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/4f995e3d-a5e7-8896-2df1-f0c391150ea7.png)

今回投稿したのは下記2点。
Q：「ユーザがいなくなったらBotはどうなるの？」
A：Botは自動的には削除されず、別のユーザ配下に移管されるまではアクセストークンの再発行はできない仕様です。
※アクセストークン自体は、生成時に表示される「Non-expiring (good for 100 years) access token for your bot.」と記載の通り半永久的に利用が出来ます。

Q：「Webex Botに紐づくユーザは変更できるの？」
A：同一組織内でのユーザに対する移管が可能で、Full Admin権限で[Application Manager](https://applications.webexbots.cloud/)より対応が可能です。


## Webex Botの管理を実際にやってみた
今回は、コミュニティサイトで教えてもらった[Application Manager](https://applications.webexbots.cloud/)を使って、下記プロセスでWebex Botのユーザ移管を実際にやってみました。

:bulb:確認の流れ
1. ユーザAでBotを作成
2. 管理者がBotをユーザBに付け替え
3. ユーザB配下にBotが付け替えられていることを確認
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/ad2af640-8ba9-7730-a153-20cddd8df9a8.png)

1．ユーザAでBotを作成
[Webex Developperサイト](https://developer.webex.com/)にて、今回はbot-transfer-test@webex.botというBotを今回のテスト用に作成しました。
 ![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/b9a66e27-a421-1990-10d2-29fb95ab50b7.png)


ユーザのMy Appsからも生成されたことを確認しました。
 ![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/69422916-1155-3e6e-0a92-de7f545c8e58.png)



2．管理者がBotをユーザBに付け替え

Cisco Communityにて教えてもらった、Application Managerのアドレスにアクセスし、管理者ユーザ名・パスワードでログインをします。Application Managerに対して委譲する権限を確認する画面が表示されますので、承諾します。
 ![画像6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/4d1f88cd-4b90-d9c7-2d15-a1e4e32ec5c3.png)


ログイン完了すると、組織で利用できるBotやIntegrationの一覧が表示されます。
本アプリで出来ることは下記です。
- 組織で利用できるBotやIntegrationの一覧表示
- 自分のアカウントに紐づくBotやIntegrationの一覧表示
- 自組織内のBotやIntegrationの検索
- 自組織内のBotやIntegrationの一覧のCSVダウンロード（Webex App経由）
 ![画像7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/a384313e-0fc6-6f83-8b3e-0c727fd2cb5b.png)


まず、移行対象のユーザに紐づくBotは居ないことを確認します。
 ![画像8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/243d3743-835a-f02b-2237-d40404fe9446.png)


紐づくユーザを変更したいBotを選択し、移行対象のユーザアカウントを入力し転送ボタンを押します。
 ![画像9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/f4ad3e6e-b460-281c-c6d1-84cfe82f0697.png)

「These applications were successfully transferred」と表示されBotに紐づくユーザ変更処理が正常に完了したことがわかります。
 ![画像10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/57037e1e-8a05-37da-25d6-937759a0a97e.png)



3．ユーザBにBotが付け替えられていることを確認
Botに紐づくユーザ変更処理が実行されると、Botを生成した識別子であるcreatedByのユーザIDが変更されていることを確認できました。下記図では、上が移行前・下が移行後のBotに紐づく情報を表しています。
 ![画像11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/c37834e3-e207-d103-62cf-55f2913da072.png)


Webex DeveloperサイトのMyApps画面側からも、Webex Botが新規で自分のアカウントに紐づいたことを確認することができました。
 ![画像12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/c634db49-66c1-9414-e0b1-eab4981bffea.png)


同一組織内で存在しないPersonEmailあるいは実在する外部組織ユーザを入れて実行するとエラーとなり、Botのユーザ紐づけ変更処理は失敗します。
 ![画像13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/81c241b1-76ce-1582-329b-0fd25078e90a.png)


Application Managerでは、インテグレーションで実現されており、一般にはまだ公開されていないアプリ管理APIを使っているように見受けられます。Webexの管理ダッシュボード（Webex Control Hub）にて、インテグレーションの利用設定をグローバルOFFにしているとこの転送ツール自体が利用できない点は注意です。
 ![画像14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338440/35a1494c-45b1-b4bb-a6d4-c98c6f893c48.png)


今回は、Application ManagerによるWebex Botの管理についてご紹介しました。
最後まで御覧頂き有難うございました。少しでも皆様のお役に立てば幸いです:relaxed:



## 免責事項
本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、私の所属する組織の意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、私の所属する組織や他の関係者による推奨や表明を目的としたものではありません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Webサイトの利用に関するあらゆる責任から私の所属する組織を免責することに同意したものとします。