はじめに
このドキュメントでは、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プッシュ通知サービス
Cisco Management Agentサービス
Cisco Unified Communications Manager IM and Presence:
Cisco XCPコンフィギュレーションマネージャ
Cisco XCP Router
Cisco Push Notification Serviceログでは、APNSに障害を発生させるトークンをフェッチする際にCUCMが複数の400応答を受信し、その結果カウンタが増加していないことがわかります。
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)
- Ciscoプッシュ通知サービス(CCMPNS)
- Tomcat
Cisco Unified Communications Manager IM and Presence:
サービスへの影響を避けるために、これらのサービスは営業時間後に再起動する必要があります。
確認
次に、IMPを含むすべてのノードで「run sql select * from machineaccountdetails」を再度実行し、refreshトークンを確認します。