使用Twilio Studio构建多语言IVR。
首先,它以通话时收集输入小部件开始,该小部件用于确定用户的语言,例如。 1个代表英语,2个代表西班牙语,等等。
默认情况下,小部件中的要说的文字字段支持一种语音语言,并且不能拆分为多个字段。这很重要,因为如果系统使用英语语音说西班牙语,那么发音几乎是无法识别的。
一种可能的解决方法是创建一个 TwiML Bin (在下面),该语言将以相关语言声明文本。但是,“呼叫时收集输入”窗口小部件不接受此 TwiML Bin 的URL,因为它可以播放某些内容,并将该窗口小部件视为没有立即跳入下一个窗口小部件的输入。
这怎么做。即使将它包含在功能中,将其保留在Studio中也将更加容易,以便与此相关的必需客户端能够随时间编辑IVR。
TwiML Bin:
enum class ProductItem constructor(
val color: String,
val price: String,
val position: Int
) {
SHOES("red", "$", 2),
CAR("blue", "$$$$$", 1),
BOAT("green", "$$$$$$$$$$$$$", 3)
}
data class Order(val ProductItem: ProductItem? = null)
val orders = listOf(Order(ProductItem.SHOES), Order(ProductItem.CAR), Order(ProductItem.BOAT))
val sortedOrders = orders.sortedBy { it.ProductItem?.position }
答案 0 :(得分:2)
正如您所指出的,这不可能在一个Gather小部件中全部实现。如果在“收集”窗口小部件之前有多个“说/播放”窗口小部件,则呼叫者将无法插入并做出不理想的选择。
您可以记录媒体/ mp3文件并显示多语言提示,或者记录TwiML bin / TTS输出的结果,并将该记录用作Gather小部件的媒体文件。
艾伦
答案 1 :(得分:1)
这对我来说是这样的:
gather_input_on_call
和一个 split_basedon
。spit_basedon
中设置所有条件。 (因此每当它发生时都会执行条目)key_match
链接到下一个语言gather_inputoncall。no_input
链接到下一个收集语言。split_based
中的每个条件分配到应定向到的位置。