I Tried Categorizing Each Customer Inquiry with Amazon Connect Customer Conversation Analytics Rules and Displaying Them on a Dashboard

I Tried Categorizing Each Customer Inquiry with Amazon Connect Customer Conversation Analytics Rules and Displaying Them on a Dashboard

I used Amazon Connect's generative AI-based "natural language – semantic match" condition in conversation analytics rules to auto-categorize Japanese chats as plan change or cancellation, and share the results plus how to read the dashboard.
2026.10.01

This page has been translated by machine translation. View original

Introduction

In Amazon Connect Customer conversational analytics rules, you can assign contact categories based on the content of a chat.

This time, I used the rule condition [Natural language – Semantic match] to classify Japanese chats into "plan change" and "cancellation." I tested whether categories are assigned even to chats in which the customer does not use those exact words, and checked the counts and percentages on the conversational analytics dashboard.

Prerequisites and workflow

For this verification, I used an Amazon Connect Customer instance with a contact flow for chat and conversational analytics available. The Region is ap-northeast-1.

The user performing the operations was granted the permissions required to create and publish conversational analytics rules. Creating rules with natural language requires the "Rules - Generative AI" permission in addition to the rules permission. Viewing the dashboard requires permission to access dashboards and permission to view conversational analytics.

https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/natural-language-semantic-match.html

https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/contact-lens-conversational-analytics-dashboard.html

The flow this time is as follows: accept a chat in a flow with chat analytics enabled, assign categories with a post-chat analytics rule, and check the results on the contact details page and the conversational analytics dashboard.

Configuring chat analytics and classification rules

Enabling chat analytics in the contact flow

I enabled chat analytics in the [Set recording and analytics behavior] block of the contact flow. The settings used this time are as follows.

Setting Value
Chat analytics Enabled
Analytics language ja-JP
Analytics mode ContactLens

cm-hirai-screenshot 2026-09-18 17.52.07
Chat analytics is enabled in the contact flow, and the analytics language is set to ja-JP

As of this writing, the AWS documentation also describes a block for new flows in addition to the block for existing flows. Here, I describe things according to the screen display of the flow used in this verification.

https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/enable-analytics.html

Creating the plan change and cancellation rules

From [Create rule], I created the following two rules. The rule names and category names are values used for this verification.

Rule name Category name Natural language statement
TestChatPlanChange TestPlanChange The customer wants to change their pricing plan or contract plan.
TestChatCancellation TestCancellation The customer wants to cancel the service or contract they are currently using.

For both rules, I specified [Post-chat analysis available] as the event and [Natural language – Semantic match] as the condition, set the category name, and published them. Because this condition cannot be used with real-time analytics, the classification results this time are checked after the chat, not during it.

cm-hirai-screenshot 2026-09-16 17.24.14
The plan change statement and the TestPlanChange category are configured

With this condition, generative AI compares the conversation transcript with the statement and evaluates it as true or false. The AWS documentation recommends expressions that make clear who is acting, such as "customer" or "agent." Because I wanted to classify the customer's intent this time, I included "customer" in the statements. When narrowing the target by queue or contact attributes, specify it in the rule's additional conditions rather than in the statement.

https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/natural-language-semantic-match.html

Note that the screen also has the conventional [Words or phrases – Semantic match] condition. The AWS documentation recommended using the generative AI-powered [Natural language – Semantic match] for those who had been using the conventional condition, so I used the latter this time.

cm-hirai-screenshot 2026-09-16 17.24.00
Input example for the conventional [Words or phrases – Semantic match] condition

Checking category assignment with Japanese chats

After publishing the rules, I tried the following four patterns in chat. In each case, I ended the chat, completed after-contact processing, and then checked the contact details page. In this environment, categories appeared about 3 to 4 minutes after the chat ended. This is the time it took during this verification, not a fixed processing time.

Consulting about reviewing charges

The customer did not say "plan change" but said they wanted to reduce their charges.

顧客:
毎月の料金が少し負担になっていて、何か見直せる方法はありますか?

エージェント:
ご利用中のプランの変更をご案内できます。現在のプランを確認いたします。

顧客:
できれば、もう少し安い内容に切り替えたいです。

TestPlanChange was assigned to this chat.

cm-hirai-screenshot 2026-09-16 17.38.53
TestPlanChange was assigned to the chat consulting about reviewing charges

Saying they want to stop using the service

Next is a chat in which the customer wants to stop using the service without saying "cancel." The agent's statement includes the word "cancellation."

顧客:
最近あまり使っていないので、今後どうするか迷っています。

エージェント:
ご利用継続、プラン変更、解約のお手続きをご案内できます。

顧客:
このまま料金がかかるなら、利用をやめる手続きをお願いしたいです。

TestCancellation was assigned to this chat.

Trying multiple categories and another way of expressing cancellation

I also tried a chat that touches on both a plan change and ending use.

顧客:
使う頻度が減ったので、契約内容をこのままにするべきか悩んでいます。

エージェント:
料金を抑えるプランへの変更、またはご利用終了のお手続きが可能です。

顧客:
安いプランがなければ、いったん利用を終えようと思います。

Both TestPlanChange and TestCancellation were assigned to this chat. In these rules, the two categories are not mutually exclusive.

cm-hirai-screenshot 2026-09-16 17.39.25

I also tried phrasing it as wanting to avoid the next bill.

顧客:
しばらくサービスを使う予定がないのですが、料金だけ発生し続けるのでしょうか?

エージェント:
ご利用を継続しない場合は、利用終了のお手続きが可能です。

顧客:
では、次の請求が発生しないように手続きをお願いします。

TestCancellation was assigned to this chat. The results are summarized below.

What was checked in the chat Assigned category
Wants to review the plan to reduce charges TestPlanChange
Wants the procedure to stop using the service TestCancellation
Wants to end use if there is no cheaper plan TestPlanChange, TestCancellation
Does not want to be billed from next time onward TestCancellation

In the range tested this time, the expected categories were assigned even to chats in which the customer did not directly use words corresponding to the category names.

Checking counts and percentages on the dashboard

I opened the [Conversational analytics dashboard] under [Dashboards and reports] and checked the [Contact categories] widget. In this verification, TestCancellation showed 3 contacts and TestPlanChange showed 2.

Here, the denominator of [Contact %] deserves attention. This value is not the composition ratio relative to the total number of category assignments; it is the percentage of the aggregated contacts that have that category.

https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/contact-lens-conversational-analytics-dashboard.html

This time, there were 5 contacts that had been analyzed by conversational analytics. Of these, 4 were chats I performed intentionally, and the remaining 1 was a contact I created by mistake during the verification. The fifth contact, created by mistake, has neither category. On the other hand, the second contact has both categories.

Contact TestCancellation TestPlanChange
1 Yes No
2 Yes Yes
3 No Yes
4 Yes No
5 (created by mistake) No No

Without a category filter

All 5 contacts, including the fifth one created by mistake, are included in the aggregation. TestCancellation showed 60% (3 of 5), and TestPlanChange showed 40% (2 of 5).

cm-hirai-screenshot 2026-09-16 17.57.46
Without a category filter, 60% and 40% were displayed based on 5 contacts

Filtering by both categories

I specified TestCancellation and TestPlanChange in the category filter. In this verification, the 4 contacts (contacts 1 to 4) that have either category were included in the aggregation, and the fifth contact, which has no category, was not included.

As a result, TestCancellation showed 75% (3 of 4), and TestPlanChange showed 50% (2 of 4).

cm-hirai-screenshot 2026-09-16 17.55.58
When filtering by both categories, 75% and 50% were displayed for the 4 target contacts

Adding 75% and 50% exceeds 100%. This is because contact 2 is counted in both categories. [Contact %] cannot be treated as a composition ratio of inquiry types that sums to 100% across categories.

If you want to check the share of all contacts analyzed by conversational analytics, remove the category filter. If you want to narrow down to contacts that match a specific category and check things such as average handle time, set the category filter.

Summary

Using [Natural language – Semantic match], in the Japanese chats tested this time, the expected categories were assigned even to inquiries that did not directly say "plan change" or "cancellation." Because categories are assigned as a result of post-chat analytics, check them after the chat ends.

[Contact %] on the dashboard is the percentage of the aggregated contacts that have that category. Because the denominator changes depending on the category filter, and multiple categories can be assigned to a single contact, avoid treating it as a composition ratio of inquiry types.

Share this article

AWSのお困り事はクラスメソッドへ