DEV Community

Cover image for Amazon Connect Touchtone Buffering (Type-ahead): Building and Testing It in a Contact Flow
Yosuke Suzuki
Yosuke Suzuki

Posted on

Amazon Connect Touchtone Buffering (Type-ahead): Building and Testing It in a Contact Flow

 ## Info
🌐 This article was translated from Japanese with AI assistance, then reviewed by the author.
Original (Japanese): https://qiita.com/yosuke-suzuki/items/24b555ec3125f9e42527

Introduction

In the April 20, 2026 update, Amazon Connect added touchtone buffering, a feature that temporarily stores and holds digits a caller presses on the keypad before or during a voice prompt.

https://aws.amazon.com/about-aws/whats-new/2026/04/amazon-connect-touchtone-buffering/

With this, callers can enter digits before a prompt finishes, and inputs are no longer lost even if they press too early or in rapid succession. Because callers reach their destination faster, it can improve the customer experience.

In this article, I actually build this into a contact flow and check how it behaves.

ℹ️ Information is current as of June 2026. Please check the official documentation for the latest details.

What you'll learn

  • What touchtone buffering does (Before / After)
  • How the Play prompt and Get customer input blocks behave when combined with the buffer

Conclusion first

When touchtone buffering is enabled, the IVR input experience changes as follows.

overview

Aspect Before After (buffering enabled)
Pressing early / in bursts Inputs may be lost Held in the buffer, up to 30 digits
Skipping prompts Key barge-in is possible, but there is no way to skip a prompt If digits are buffered, the prompt can be skipped entirely without playing to the end
Caller context Only input after the call connects Can be passed in advance via the dial string

The first two ("pressing early / in bursts" and "skipping prompts") improve the input experience during the call itself: inputs are not lost when pressed early, and on a familiar menu the caller can move ahead without waiting for the prompt.

The third ("caller context") applies to calls originated from a website or app (choose-to-call / app-to-call). The official documentation describes it as follows:

Touchtone buffering also enables applications to pass known caller context into a flow before the conversation starts. In choose-to-call and app-to-call scenarios, the originating application can append a customer identifier, web session reference, or other context to the dial string. For example, tel:+15555555555,1234567 sends the digits 1234567 into the buffer the moment the call connects.

1. What is touchtone buffering

Below is an excerpt from the official documentation. In short, it is a mechanism that enables "type-ahead" input in an IVR.

Touchtone buffering in Connect Customer eliminates a common frustration in IVR systems by allowing customers to enter their complete menu path immediately (such as pressing 1-2-3 in rapid succession) or input identification numbers (such as account IDs or order numbers) without waiting for each prompt to finish or losing their inputs. This "type-ahead" capability reduces call handling time and improves self-service containment.

Overview

  • Callers can type a menu path ahead, such as pressing 1, 2, 3 (DTMF) together
  • Identification numbers such as account or order numbers can also be entered without waiting for each prompt to finish
  • Entered digits are collected in a temporary buffer of up to 30 digits and consumed when the flow needs them
  • Used digits are discarded immediately after processing; once the buffer reaches 30 digits, further input is ignored until space frees up

The result is shorter call handling time and improved self-service containment.

2. Supported channels

Only the Voice channel is supported. Other channels go to the Error branch.

Channel Supported
Voice Yes
Chat No (Error branch)
Task No (Error branch)
Email No (Error branch)

3. Hands-on

3.1 Test environment

  • AWS Region: Tokyo (ap-northeast-1)

3.2 What I tested

I check how the IVR input behavior changes with touchtone buffering on / off.

# Test case Buffering Expected behavior
1 Pressing a digit while the Get customer input block is running Off Since the block is waiting for input, a digit pressed during the prompt is accepted (DTMF barge-in; possible before this update too)
2 Pressing a digit while the Get customer input block is running On If a digit is in the buffer, it is dequeued automatically and the flow advances without prompting the caller
3 Pressing a digit while the Play prompt block is running Off Not waiting for input, so a digit pressed during playback is not held and is lost
4 Pressing a digit while the Play prompt block is running On With the skip option enabled, the prompt is skipped entirely as long as digits remain in the buffer
5 Multi-digit input Off Digits pressed before the input block's prompt are lost; the caller must enter them again after the prompt
6 Multi-digit input On Digits pressed before the prompt are dequeued by the Get customer input block without prompting

3.3 Building the contact flow

I build a contact flow for testing. The overall layout is below. It consists of 18 blocks in total, but I will explain the key ones: ① Set Touchtone Buffer Behavior, ② Play prompt, and ③ Get customer input.

flow overview

3.4 Block settings

① Set Touchtone Buffer Behavior

  • Touchtone buffer option: Enable Buffering

Set Touchtone Buffer Behavior

② Play prompt

  • Text to speak (set to wait 5 seconds so I can test input during playback)

    <speak>
        Prompt playback test<break time="5000ms"/>
        Playback finished
    </speak>
    
  • Interpret as: SSML

Play prompt

ℹ️ When you enable the "Skip or interrupt this prompt when touchtone buffering is enabled" option, the prompt is skipped if digits remain in the buffer. It is OFF by default, so leave it unchecked for prompts that must always be played.

Skip option

③ Get customer input (3 places)

  • Text to speak: DTMF test
  • Options (DTMF): 1, 2, 3

Get customer input 1

Get customer input 2

4. Verification

I test whether digits pressed ahead during each block are held / consumed with touchtone buffering on / off, and whether the prompt is skipped. The test flow places a Play prompt that waits 5 seconds, followed by three Get customer input blocks for DTMF 1 / 2 / 3. During prompt playback I press 1, 2, 3 ahead and check how each block processes it.

Results

# Test case Buffering Result
1 Pressing a digit while Get customer input is running Off Input during the prompt was accepted
2 Pressing a digit while Get customer input is running On Advanced to the next block without prompting
3 Pressing a digit while Play prompt is running Off Input during playback was lost
4 Pressing a digit while Play prompt is running On The prompt was skipped
5 Multi-digit input Off Digits pressed before the prompt were lost
6 Multi-digit input On Buffered digits were received without prompting

From the tests, I confirmed the effect of touchtone buffering on the following points:

  • For the Get customer input block, when a digit is in the buffer the flow advances automatically without prompting (#2)
  • For the Play prompt block, with the skip option enabled the prompt is skipped entirely while digits remain in the buffer (#4)
  • Multi-digit type-ahead is also received without being lost (#6)

None of these behaviors appeared when buffering was off, so type-ahead is clearly working.

Summary

In this article, I tried out type-ahead digit input with touchtone buffering. Only when buffering was on were the digits pressed during and before a prompt carried over to the following blocks. For IVRs that repeat "long announcement" → "collect digits" many times, it seems worth considering from a customer-experience perspective.

References

Top comments (0)