内容

はじめに

前提条件

要件

使用するコンポーネント

背景説明

トラブルシュート

解決方法

確認

はじめに

このドキュメントでは、APNSの「400 bad request」エラーをトラブルシューティングする方法について説明します。これは、Cisco Bug IDCSCvi01660に記載されている既知の問題です。

前提条件

要件

次の項目に関する知識があることが推奨されます。

- Apple Push Notifications ありません。

- Apple Push Notifications 機能.

使用するコンポーネント

このドキュメントは、特定のハードウェアやソフトウェアのバージョンに限定されるものではありません。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな（デフォルト）設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

背景説明

クラスタでプッシュ通知が有効になっている場合、Cisco Unified Communications ManagerとIM and Presenceサービスは、AppleまたはGoogleクラウドのプッシュ通知サービスを使用して、iOSまたはAndroidデバイスで実行される互換性のあるCisco JabberまたはWebexクライアントにプッシュ通知を送信します。プッシュ通知を使用すると、システムがバックグラウンドモード（サスペンドモードとも呼ばれる）に入った後でも、システムがクライアントと通信できるようになります。プッシュ通知を使用しないと、バックグラウンドモードに入ったクライアントにコールやメッセージを送信できない可能性があります。

Cisco Cloudで認証するために、Cisco Communications Managerサーバがオンボーディングプロセスの一部としてトークンを生成します。「400 bad request」メッセージが表示された場合は、プッシュ通知サービスへのマシンアクセストークンの期限が切れているため、ドキュメントに従ってアクセストークンを手動で更新する必要があります。

https://www.cisco.com/c/en/us/td/docs/voice_ip_comm/cucm/push_notifications/cucm_b_push-notifications-deployment-guide/cucm_b_push-notifications-deployment-guide_chapter_01.html?bookSearch=true

トラブルシュート

デバッグする次のログを設定し、Real Time Monitoring Toolで収集します。

Cisco Unified Communications Manager :

シスコプッシュ通知サービス

Cisco Management Agentサービス

Cisco Unified Communications Manager IM and Presence:

Cisco XCPコンフィギュレーションマネージャ

Cisco XCP Router

Cisco Push Notification Serviceログで、CUCMが複数の 400応答 apnsが失敗するトークンを取得している間、カウンタは増加しません。

2024-07-16 15:09:50,514 DEBUG [Timer-144] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400  2024-07-16 15:19:51,007 DEBUG [Timer-145] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400  2024-07-16 15:29:51,605 DEBUG [Timer-146] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400  2024-07-16 15:39:52,096 DEBUG [Timer-147] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400  2024-07-16 15:49:52,565 DEBUG [Timer-148] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400  2024-07-16 15:59:53,032 DEBUG [Timer-149] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400

コールが発信された時刻付近で、Cisco XCPルータログに無効な応答が記録されている場合があります。

2024-07-16 17:21:43,464 DEBUG [Timer-1382] xmlframework.XCPConfigMgr - FetchAndStoreAccessToken: Calling createAccessToken() with granttype:refresh_token, refreshToken:MTc2YzFhN2YtMDA1Ny00MTVlLWJGZmMjcwYTU3MjY1NGI1NzItZmE0, accessTokenURL proxyUsernamenull  2024-07-16 17:21:43,468 INFO  [Timer-1382] utilities.CloudOnboarding - TRACKING ID:::::::FOS_e8e8ee93-818f-4fe5-8a23-6b08a879b91b  2024-07-16 17:21:43,790 ERROR [Timer-1382] utilities.TomcatTrustManager - checkServerTrusted:entered   2024-07-16 17:21:43,791 ERROR [Timer-1382] utilities.TomcatTrustManager - checkServerTrusted:entered 2  2024-07-16 17:21:43,958 DEBUG [Timer-1382] xmlframework.XCPConfigMgr - XCPConfigMgr:Inside responseStatus()  2024-07-16 17:21:43,958 ERROR [Timer-1382] xmlframework.XCPConfigMgr - 400 Bad Request: invalid_request, unsupported_grant_type, invalid_client, invalid_refresh_token, tokenlimit_reached  2019-07-16 17:21:43,958 DEBUG [Timer-1382] xmlframework.XCPConfigMgr - XCPConfigMgr:FetchAndStoreAccessToken: Inside Finally Block

これは既知のCisco Bug ID CSCvi01660です。

解決方法

ラボシステムを構築し、ラボから実稼働システムに更新トークンを更新します。

ラボシステムを配備したら、次の手順を実行します。

ステップ 1：

Call Managerパブリッシャ上でCLIセッションを開き、「run sql select * from machineaccountdetails」コマンドを実行して、すべての出力を.txtファイルに保存します。

すべての出力を保存したら、Call Manager pkidに特に注意してください。たとえば、ラボ環境は「e40c24c0-cd4c-4256」です。

また、ラボ環境で「run sql select * from machineaccountdetails」コマンドを実行し、すべての出力を.txtファイルに保存します。

ラボ環境のrefreshtokenには特に注意してください。これは、実稼働環境で無効なトークンを置き換えるために使用する有効なトークンです。ラボ環境では、OGYyZGI2MWMtNjUwYy00Y2FiLThh」です。

ステップ 2：

現在の機能していない更新トークンを有効なラボトークンに置き換える必要があります。

実稼働pkidを保存した後、実稼働Call Managerパブリッシャで次のSQLクエリを実行します。

sql update machineaccountdetails set refreshtoken='here goes the valid refresh token of your laboratory environment'を実行します。ここで、pkid='here goes your production pkid'です。

前のSQLクエリは、ラボ環境で実行されているトークンを使用して、非実行トークンを変更します。

ステップ 3：

ラボの更新トークンを使用してmachineaccountdetailsを更新した後、 次のサービスを再起動してください：

Cisco Unified Communications Manager ::

- Cisco Management Agentサービス(CMAS)

- シスコプッシュ通知サービス(CCMPNS)

- Tomcat

Cisco Unified Communications Manager IM and Presence:

- XCP構成マネージャ

- XCPルータ

- Tomcat

サービスへの影響を避けるため、これらのサービスは数時間後に再起動する必要があります。

確認

次に、IMPを含むすべてのノードで「run sql select * from machineaccountdetails」を再度実行し、更新トークンがあることを確認します。