キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
564
閲覧回数
0
いいね!
6
返信

Webex API Update a Personで外線番号を剥奪した際、ロケーションに変更が生じる事象について

YH1230
Level 1
Level 1

以下のケースで、Webex APIのユーザー情報更新API(Update a Person)で外線番号を剥奪した際、
所属しているロケーションから抜けてしまい、ロケーション未所属となる事象を確認しました。
外線番号を剥奪してもロケーションには変更が生じず、所属しているロケーションのままになるようにしてほしいです。

【前提条件】
操作対象のユーザーアカウントの状態

・ライセンス:Webex Calling Professionalを所有
・電話番号:内線番号と外線番号を使用
・ロケーション:所属(例としてTokyoとする)
・管理者の役割:ロケーション管理者(Tokyoロケーションのロケーション管理者権限を所有)

【使用するAPI】
Update a Person(https://developer.webex.com/docs/api/v1/people/update-a-person)を使用。
PUT https://webexapis.com/v1/people/{orgID}?callingData=true

【リクエストボディ】
外線番号を剥奪するため、キー:phoneNumbersを削除。内線はキー:extensionで指定して残す。
ロケーションは変更せず、レスポンスボディ内に所属中のロケーションIDを指定したままとする。

{
"id": "…",
"emails": ["…"],
"sipAddresses": [
{
"type": "cloud-calling",
"value": "…",
"primary": true
}
],
"extension": "…",
"locationId": "TokyoロケーションのID",
"displayName": "…",
"nickName": "…",
"firstName": "…",
"lastName": "…",
"orgId": "…",
"roles": [],
"licenses": [
"Webex Calling ProfessionalのID",
"Free screen shareのID"
],
"created": "…",
"lastModified": "…",
"status": "unknown",
"invitePending": false,
"loginEnabled": true,
"type": "person"
}

【APIの呼び出し結果(APIレスポンス)】

想定結果:
・外線番号:なし
・内線番号:あり
・ロケーション:API呼び出し前と同じロケーションに所属(レスポンスにキー:locationIdが含まれる)

実際の結果
・外線番号:なし
・内線番号:あり
・ロケーション:未所属
・GETクエリパラメータで?callingData=trueを指定しているが、キー:locationIdがレスポンスが含まれていない。

{
"id": "…",
"emails": [
"…"
],
"phoneNumbers": [
{
"type": "work_extension",
"value": "…",
"primary": true
}
],
"sipAddresses": [
{
"type": "cloud-calling",
"value": "…",
"primary": true
}
],
"extension": "…",
"displayName": "…",
"nickName": "…",
"firstName": "…",
"lastName": "…",
"orgId": "…",
"roles": [],
"licenses": [
"Webex Calling ProfessionalのID",
"Free screen shareのID"
],
"created": "…",
"lastModified": "…",
"status": "unknown",
"invitePending": false,
"loginEnabled": true,
"type": "person"
}


【API呼び出し後のContorlHubでの該当ユーザーの状態】
コメント添付の画像の通り、ロケーションに変更(Tokyo所属から未所属に変更)が生じている。
また、管理->ユーザーの検索結果から該当ユーザーがTokyoロケーションに所属していないことを確認。

なお、ContorlHubから同じ条件で外線番号を剥奪した場合、ロケーションに変更は生じません。
また、前提条件を一部変更し「管理者の役割:なし」で、APIを呼び出した場合、ContorlHubの操作と同じ結果でした。

これを踏まえて、このケースのAPI呼び出し結果に対する要望になりますが、
ロケーションには変更が生じず、所属しているロケーションのままになるようにしてほしいです。

以上になります。
ご検討宜しくお願い致します。

6件の返信6

Tohru Ohzono
Cisco Employee
Cisco Employee

こんにちは。

外線番号削除後に、"locationId"が含まれなくなる件、
内容やご要望などは理解しました。

調査や確認を行うのでしばらくお待ちください。

Tohru Ohzono
Cisco Employee
Cisco Employee

再現確認を行うにあたっていくつか確認させてください。

Update a Person APIを実行するには、
一般的にはOAuth 2.0フローまたはService Appを使って管理者権限の一部のアクセス権を持ったアクセストークンがが必要になるはずです。
一連の処理の過程を想定すると、Scopeとしては"spark-admin:people_read"、"spark-admin:people_write"、"spark-admin:locations_read"
あたりが必要になると思います。
(Update a Person APIだけであれば"spark-admin:people_write"のみでOKです。)

管理者権限の必要ない"spark:people_write"で変更できる項目はかなり限られているので、
今回のお問い合わせには該当しないと思っています。


今回お問い合わせの問題としては以下の前提でよろしいでしょうか?

■ API呼び出しに利用しているAccess Token。

"spark-admin:people_write"のScopeを宣言したIntegration(OAuth2.0)またはService Appのフローを利用して
取得したAccess Tokenを使ってAPIを呼び出していて、認証・認可の処理は"組織管理者ユーザ"で行ったもの。
Access Token自体はロケーション管理者ではなく、組織の管理者ユーザの一部の権限が利用できるものを使用しているとの認識です。


■ Update a Personで変更する対象のユーザ。

1) ロケーション管理者の役割を持ったユーザ。
このユーザから外線番号を剥奪すると、ロケーション情報が消えてしまう。

2) 管理者の役割を持たないユーザ。
このユーザから外線番号を剥奪しても、ロケーション情報は消えない。


Update a Person APIの"PUT /v1/people/{person id}"における、
{person id}部分で指定する、変更対象のユーザが、
「ロケーション管理者」か、「管理者の役割なし」かで動作が異なるという認識でよろしいでしょうか?


お問い合わせ内容を読むと、API呼び出しのAccess Tokenに対応するユーザが、
「ロケーション管理者」の場合は問題が起こっていて、「管理者の役割なし」の場合には問題なかったとも読み取れたのですが、
この場合は、Update a Person APIの実行自体が失敗するのではないかと思っています。

YH1230
Level 1
Level 1

■ API呼び出しに利用しているAccess Token。
Webex for Developersから取得できるPersonal Access Tokenを使用しました。
挙げられた下記Scopeを含めています。
"spark-admin:people_read"
"spark-admin:people_write"
"spark-admin:locations_read"

■ Update a Personで変更する対象のユーザ
> Update a Person APIの"PUT /v1/people/{person id}"における、{person id}部分で指定する、変更対象のユーザが、
>「ロケーション管理者」か、「管理者の役割なし」かで動作が異なるという認識でよろしいでしょうか?

はい。
なお、リクエストURLに誤りがありましたので、訂正させて頂きます。
PUT https://webexapis.com/v1/people/{personId}

組織の管理者権限を持つユーザで払い出したTokenを使って、組織内のユーザに対して外線番号のつけ外しをしました。
その際にロケーション管理権限を持つか持たないかで、実行結果が変わりました。
Update a Person API自体の結果は、ロケーション管理者の有無に関わらず、ともにステータスコード:200で正常終了します。
ロケーション管理者:有の場合、報告した事象を確認しました。
ロケーション管理者:無の場合、事象は発生しません(レスポンスボディにロケーションIDが含まれています)

ご確認ありがとうございます。

こちらでも同様と思われる動作は再現できました。
動作からすると不具合の可能性が高いとは思いますが、
対応検討するのでお待ちください。

現在、不具合の対応を検討いただいておりますが、対応の状況をご教示いただけないでしょうか。
お忙しいところ恐縮ですが、よろしくお願いいたします。

こんにちは。

本件、ご不便をおかけしており申し訳ございません。

現在も修正を検討中の状況です。
コミュニティでの対応上、大きな進展がない状況で定期的に報告などは難しいので、
何か共有できる進展があった際には状況を投稿するようにします。

現状では通常の優先度での対応になっておりますが、状況次第では優先度上げる検討も可能かと思います。
(優先度上げをお約束するものではありません。)

細かい影響度などの情報は公開のコミュニティに投稿いただけるような内容ではないため、
コミュニティのDMにて私のチームの連絡先をお伝えいたしますので、必要に応じてそちらに連絡いただければと思います。

Quick Links