TwiML™ Voice: <Gather>
Você pode usar o verbo <Gather>
do TwiML para coletar dígitos ou transcrever a fala durante uma chamada.
O exemplo a seguir mostra o uso mais básico do TwiML <Gather>
:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather/>
</Response>
Você sempre pode enviar o TwiML simples da Twilio ou aproveitar as bibliotecas auxiliares para adicionar o TwiML a seus aplicativos da web:
Quando a Twilio executar este TwiML, ele pausará por até cinco segundos para aguardar o autor da chamada inserir dígitos no teclado. Algumas coisas podem acontecer em seguida:
- O autor da chamada insere dígitos seguidos por um símbolo
#
ou 5 segundos de silêncio. A Twilio enviará esses dígitos em uma solicitação POST de volta ao URL que hospeda seu TwiML. - O autor da chamada não insere nenhum dígito e 5 segundos se passam. A Twilio passará para o próximo verbo TwiML no documento – como não há mais verbos aqui, a Twilio encerrará a chamada.
Ao aninhar <Say> ou <Play> no <Gather>, você poderá ler algum texto ou reproduzir música para o autor da chamada enquanto aguarda a entrada dele. Consulte "Nest other verbs" (Aninhar de outros verbos) abaixo para obter exemplos e mais informações.
Atributos do <Gather>
<Gather>
oferece suporte aos seguintes atributos que alteram seu comportamento:
Nome do atributo | Valores permitidos | Valor padrão |
---|---|---|
action (ação) | URL (relativo ou absoluto) | URL do documento atual |
finishOnKey | 0 -9 , # , * e '' (a string vazia). Observação: finishOnKey funciona somente quando uma sequência de dígitos o precede. Ele não pode ser usado como um mecanismo para interromper um <Gather> sem a entrada do dígito anterior |
# |
hints | "palavras, frases que têm muitas palavras", tokens de classe | nenhum |
input (entrada) | dtmf , speech , dtmf speech |
dtmf |
language (idioma) | Tags de idioma BCP-47 | en-US |
method | GET , POST |
POST |
numDigits | inteiro positivo | ilimitado |
partialResultCallback | URL (relativo ou absoluto) | nenhum |
partialResultCallbackMethod | GET , POST |
POST |
profanityFilter | true , false |
verdadeiro |
speechTimeout | inteiro positivo ou auto |
valor do atributo de tempo limite |
timeout (tempo limite) | inteiro positivo | 5 |
speechModel | default , numbers_and_commands , phone_call |
padrão |
enhanced | verdadeiro, falso | falso |
actionOnEmptyResult | true , false |
falso |
Use um ou mais desses atributos em um verbo <Gather>
da seguinte forma:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather input="speech dtmf" timeout="3" numDigits="1">
<Say>Please press 1 or say sales for sales.</Say>
</Gather>
</Response>
action (ação)
O atributo action
usa um URL absoluto ou relativo como valor. Quando o autor da chamada terminar de inserir dígitos (ou o tempo limite for atingido), a Twilio fará uma solicitação HTTP para esse URL. Essa solicitação incluirá os dados do usuário e os parâmetros de solicitação padrão da Twilio.
Se você não fornecer um parâmetro action
, a Twilio fará uma solicitação POST ao URL que contém o documento do TwiML ativo.
A Twilio pode enviar alguns parâmetros extras com sua solicitação depois que <Gather>
terminar:
Se você coletar dígitos do autor da chamada, a Twilio incluirá o parâmetro Digits
contendo os números digitados pelo autor da chamada.
Se você especificar fala como uma entrada com input="speech"
, a Twilio incluirá SpeechResult
e Confidence
:
SpeechResult
contém o resultado transcrito da fala do autor da chamada.Confidence
contém uma pontuação de confiança entre 0,0 e 1,0. Uma pontuação de confiança mais alta significa uma maior probabilidade de que a transcrição seja precisa.
Observação: Seu código não deve esperar confidence
como um campo obrigatório, pois não é garantido que ele seja preciso, ou mesmo definido, em nenhum dos resultados.
Depois que <Gather>
terminar e a Twilio enviar sua solicitação para seu URL action
, a chamada atual continuará usando o TwiML que você enviar de volta a partir desse URL. Por isso, qualquer verbo do TwiML que ocorrer depois de <Gather>
será inacessível.
No entanto, se o autor da chamada não inserir nenhum dígito ou fala, o fluxo da chamada continuará no documento do TwiML original.
Sem um URL action
, a Twilio solicitará novamente o URL que hospeda o TwiML que você acabou de executar. Isso pode levar a um comportamento de loop indesejado se você não tiver cuidado. Consulte nosso exemplo para obter mais informações.
Se você iniciou ou atualizou uma chamada com um parâmetro twiml
, os URLs action
para <Record>
, <Gather>
e <Pay>
devem ser absolutos.
Os Documentos da API Recursos de chamada têm exemplos específicos de idioma de criação e atualização de chamadas com o TwiML:
- Consulte "Create a Call resource with TwiML" (Criar um recurso de chamada com o TwiML) em Create a Call Resource (Criar um recurso de chamada) para ver exemplos de como criar uma chamada com um parâmetro
twiml
. - Consulte "Update a Call resource with TwiML" (Atualizar um recurso de chamada com o TwiML) em Update a Call Resource (Atualizar um recurso de chamada)para ver exemplos de atualização de uma chamada com um parâmetro
twiml
.
Imagine que você tenha o seguinte TwiML hospedado em http://example.com/complex_gather.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather>
<Say>
Please enter your account number,
followed by the pound sign
</Say>
</Gather>
<Say>We didn't receive any input. Goodbye!</Say>
</Response>
Cenário 1: Se o autor da chamada:
- não pressionar o teclado nem dizer nada por cinco segundos ou
- pressionar '#' (o valor
finishOnKey
padrão) antes de inserir qualquer outro dígito
em seguida, eles ouvirão: "We didn't receive any input. Goodbye!"
Cenário 2: Se o autor da chamada:
- pressionar um dígito enquanto a chamada está falando "Please enter your account number..." (Insira o número de sua conta...)
o verbo <Say>
vai parar de falar e aguardará a ação do usuário.
Cenário 3: Se o autor da chamada:
- inserir
12345
e depois pressionar#
ou - permitir a passagem de 5 segundos
a Twilio enviará os dígitos e os parâmetros da solicitação para o URL que hospeda esse TwiML (http://example.com/complex_gather.xml
). A Twilio vai buscar esse mesmo TwiML novamente e executá‐lo, deixando o autor da chamada preso nesse loop de <Gather>
.
Para evitar esse comportamento, é melhor apontar seu URL action
para um novo URL que hospeda algum outro TwiML para lidar com a duração da chamada.
A seguinte amostra de código é quase idêntica à do TwiML acima, mas adicionamos os atributos action
method
:
Agora, quando o autor da chamada inserir sua entrada, a Twilio enviará os dígitos e os parâmetros de solicitação para o URL process_gather.php
.
Se quiséssemos ler novamente essa entrada para o autor da chamada, nosso código hospedado em /process_gather.php
poderia ser semelhante a:
<?php
// page located at http://yourserver/process_gather.php
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
echo "<Response><Say>You entered ". $_REQUEST['Digits']. "</Say></Response>";
?>
finishOnKey
finishOnKey
permite definir um valor que o autor da chamada pode pressionar para enviar seus dígitos.
Por exemplo, se você definir finishOnKey
como #
e o autor da chamada digitar 1234#
, a Twilio irá parar imediatamente de aguardar mais entradas depois de pressionar #
.
A Twilio enviará Digits=1234
para seu URL action
(observe que #
não está incluído).
Os valores permitidos para esse atributo são:
#
(este é o valor padrão)*
- Dígitos únicos
0
–9
- Uma string vazia (
''
)
Se você usar uma string vazia, <Gather>
vai capturar todas as entradas do usuário e nenhuma tecla terminará o <Gather>
. Nesse caso, a Twilio envia os dígitos do usuário para o URL action
somente depois que o tempo limite for atingido.
Se o TwiML a seguir for usado, finishOnKey
não terá impactos quando o autor da chamada começar a falar.
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather input="speech dtmf" finishOnKey="#" timeout="5">
<Say>
Please say something or press * to access the main menu
</Say>
</Gather>
<Say>We didn't receive any input. Goodbye!</Say>
</Response>
hints
Você pode melhorar o reconhecimento de palavras ou frases da Twilio que você espera dos seus autores da chamada adicionando hints
em <Gather>
.
O atributo hints
contém uma lista de palavras ou frases que a Twilio deve esperar durante o reconhecimento.
Você pode fornecer até 500 palavras ou frases nesta lista, separando cada entrada com uma vírgula. Suas dicas podem ter até 100 caracteres cada, e você deve separar cada palavra em uma frase com um espaço, por exemplo:
hints="this is a phrase I expect to hear, keyword, product name, name"
Você também pode passar um token de classe para melhorar o reconhecimento.
hints="$OOV_CLASS_ALPHANUMERIC_SEQUENCE"
input (entrada)
Especifique quais entradas (DTMF ou fala) a Twilio deve aceitar com o atributo input
.
O input
padrão para <Gather>
é dtmf
. Você pode definir input
como dtmf
, speech
ou dtmf speech
.
Se você definir input
como speech
, a Twilio coletará a fala do autor da chamada por uma duração máxima de 60 segundos.
Observe que o reconhecimento de fala do <Gather>
ainda não está otimizado para entradas alfanuméricas (por exemplo, ABC123), isso pode levar a resultados imprecisos e, portanto, não recomendamos.
Se você definir dtmf speech
para sua entrada, a primeira entrada detectada (speech
ou dtmf
) terá precedência. Se speech
for detectado primeiro, finishOnKey
será ignorado.
O exemplo a seguir mostra um <Gather>
que especifica a entrada de fala do usuário. Quando este TwiML for executado, o autor da chamada ouvirá o prompt de <Say>
. A Twilio coletará a entrada de voz por até 60 segundos.
Assim que o autor da chamada parar de falar por cinco segundos, a Twilio publicará seu discurso transcrito no URL action
.
Voltar para a lista de atributos
language (idioma)
O atributo language
especifica o idioma que a Twilio deve reconhecer do autor da chamada.
Esse valor tem como padrão en-US
, mas você pode configurar seu language
para qualquer um dos nossos idiomas compatíveis: veja a lista completa.
Voltar para a lista de atributos
método
O method
que você definiu em <Gather>
diz à Twilio se deve solicitar o URL de ação via HTTP GET
ou POST
.
POST
é o método padrão do <Gather>
.
numDigits
Você pode definir o número de dígitos esperado do autor da chamada incluindo numDigits
em <Gather>
.
O atributo numDigits
só se aplica à entrada DTMF.
Por exemplo, você pode querer definir numDigits="5"
ao pedir que o autor da chamada insira seu código postal de 5 dígitos. Assim que o autor da chamada inserir o dígito final de 94117
, a Twilio enviará imediatamente os dados para o URL action
.
Voltar para a lista de atributos
partialResultCallback
Se você fornecer um URL partialResultCallback
, a Twilio fará solicitações a esse URL em tempo real, pois reconhece a fala. Essas solicitações conterão um parâmetro rotulado UnstableSpeechResult
que contém transcrições parciais. Essas transcrições podem mudar à medida que o reconhecimento de fala progride.
Os webhooks que a Twilio faz para partialResultCallback
são assíncronos. Eles não aceitam nenhum TwiML em resposta. Se quiser executar mais ações com base nesse resultado parcial, você precisará usar a API REST para modificar a chamada.
Voltar para a lista de atributos
profanityFilter
O profanityFilter
especifica se a Twilio deve filtrar linguagem obscena da sua transcrição da fala. Esse atributo assume como padrão true
, que substitui todos os caracteres, exceto o inicial, em cada palavra obscena filtrada por asteriscos, por exemplo, 'f***.'
Se você definir esse atributo como false
, a Twilio não filtrará mais nenhuma palavra obscena em suas transcrições.
Voltar para a lista de atributos
speechTimeout
Ao coletar a fala do autor da sua chamada, speechTimeout
define o limite (em segundos) que a Twilio aguardará antes de interromper seu reconhecimento de fala. Depois que esse tempo limite for atingido, a Twilio publicará o speechResult
em seu URL action
.
Se você usar timeout
e speechTimeout
em seu <Gather>
, timeout
terá precedência em relação à entrada DTMF e speechTimeout
terá precedência em relação à fala.
Se você definir speechTimeout
como auto
, a Twilio interromperá o reconhecimento de voz quando houver uma pausa na fala e retornará os resultados imediatamente.
Voltar para a lista de atributos
timeout (tempo limite)
timeout
permite definir o limite (em segundos) que a Twilio aguardará até que o autor da chamada pressione outro dígito ou diga outra palavra antes de enviar dados para seu URL action
.
Por exemplo, se timeout
for 3
, a Twilio aguarda três segundos para que o autor da chamada pressione outra tecla ou diga outra palavra antes de enviar seus dados.
A Twilio aguardará até que todos os verbos aninhados sejam executados antes de iniciar o período timeout
.
O valor de timeout
padrão é 5
.
Voltar para a lista de atributos
speechModel
speechModel
permite selecionar um modelo específico mais adequado para seu caso de uso para melhorar a precisão da fala no texto. O atributo atualmente é compatível com default
, numbers_and_commands
e phone_call
.
numbers_and_commands
e phone_call
são mais adequados para os casos de uso em que você espera receber consultas curtas, como comandos de voz ou pesquisa por voz. Explore as duas opções para ver qual funciona melhor para seu caso de uso.
<Gather input="speech" enhanced="true"speechModel="phone_call">
<Say>Please tell us why you're calling.</Say>
</Gather>
Atualmente, o valor phone_call
para speechModel oferece suporte apenas a um conjunto de idiomas: en-US
, en-GB
, en-AU
, fr-FR
, fr-CA
, ja-JS
, ru-RU
, es-US
, es-ES
e pt-BR
. Você também deve definir o valor speechTimeout
como um número inteiro positivo, em vez de usar auto
.
Voltar para a lista de atributos
enhanced
O atributo enhanced
instrui o <Gather>
a usar um modelo de fala premium que vai melhorar a precisão dos resultados de transcrição. O modelo de fala premium só é compatível com phone_call
speechModel
. Ela custa 50% a mais a US$ 0,03 por 15 s de <Gather> do que o modelo padrão phone_call
. O modelo phone_call
premium foi criado usando milhares de horas de dados de treinamento. Ele garante 54% menos erros ao transcrever conversas telefônicas quando comparado ao modelo básico phone_call
.
O seguinte TwiML instrui <Gather>
a usar o modelo premium phone_call
:
<Gather input="speech" enhanced="true"speechModel="phone_call">
<Say>Please tell us why you're calling.</Say>
</Gather>
<Gather>
vai ignorar o atributo enhanced
se qualquer outro speechModel
, exceto phone_call
for usado.
Por exemplo, no TwiML a seguir, <Gather>
ignora o atributo enhanced
e aplica os numbers_and_commands
speechModel
padrão.
<Gather input="speech" enhanced="true" speechModel="numbers_and_commands">
<Say>Please tell us why you're calling.</Say>
</Gather>
O modelo phone_call
aprimorado premium custa US$ 0,03 por enunciado, enquanto o modelo phone_call
padrão custa US$ 0,02 por enunciado.
Leia o Language appendix (Apêndice de idioma) para ver se o modelo aprimorado está disponível para seu idioma.
Voltar para a lista de atributos
actionOnEmptyResult
actionOnEmptyResult
permite que você force o <Gather>
a enviar um webhook ao url de ação mesmo quando não há entrada DTMF. Por padrão, se o <Gather>
atingir o tempo limite enquanto aguarda a entrada DTMF, ele continuará até a próxima instrução do TwiML.
Por exemplo, no seguinte TwiML quando <Gather>
atinge o tempo limite, a instrução <Say>
é executada.
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather>
<Say>
Please enter your account number,
followed by the pound sign
</Say>
</Gather>
<Say>We didn't receive any input. Goodbye!</Say>
</Response>
Para sempre forçar o <Gather>
o envio de um webhook para o URL action
, use o seguinte TwiML,
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather actionOnEmptyResult="true" action="/gather-action">
<Say>
Please enter your account number,
followed by the pound sign
</Say>
</Gather>
</Response>
Aninhe outros verbos
Você pode aninhar os seguintes verbos dentro de <Gather>:
<Say>
O exemplo a seguir mostra um <Gather>
com um <Say>
aninhado. Isso lerá algum texto para o autor da chamada e permitirá que ele insira a entrada a qualquer momento enquanto esse texto é lido para ele:
Quando um <Gather>
contém <Say>
aninhado ou verbos <Play>
, o timeout
começa depois que o áudio é concluído ou quando o autor da chamada pressiona sua primeira tecla.
Gerenciar tempos limites
Quando um <Gather>
atinge seu tempo limite sem nenhuma entrada do usuário, o controle de chamadas passa para o próximo verbo no seu documento TwiML original.
Se desejar que a Twilio envie uma solicitação para seu URL action
mesmo se <Gather>
atingir o tempo limite, inclua um <Redirect>
após o <Gather>
da seguinte maneira:
Com esse código, a Twilio passará para o próximo verbo no documento (<Redirect>
) quando <Gather>
atingir o tempo limite. Em nosso exemplo, instruímos a Twilio a fazer uma nova solicitação GET para /process_gather.php?Digits=TIMEOUT
Resolução de problemas
Alguns problemas comuns que os usuários enfrentam ao trabalhar com <Gather>
:
Problema: <Gather>
não recebe a entrada do autor da chamada quando ele está usando um telefone VoIP.
Solução: Alguns telefones VoIP têm problemas para enviar dígitos DTMF. Isso geralmente ocorre porque esses telefones usam protocolos de áudio com economia de largura de banda compactada que interferem na transmissão do sinal do dígito. Consulte a documentação do seu telefone sobre problemas DTMF.
Problema: A Twilio não envia o parâmetro Digits
para seu URL <Gather>
.
Solução: Verifique se o aplicativo não está respondendo ao URL action
com um redirecionamento HTTP 3xx. A Twilio seguirá esse redirecionamento, mas não enviará novamente o parâmetro Digits
.
Caso encontre outros problemas com <Gather>
, entre em contato com nossa equipe de suporte para obter assistência.
Language appendix
A .csv of languages is available here.
Language | Language Tag | Supports enhanced model |
---|---|---|
Afrikaans (South Africa) | af-ZA | No |
Albanian (Albania) | sq-AL | No |
Amharic (Ethiopia) | am-ET | No |
Arabic (Algeria) | ar-DZ | No |
Arabic (Bahrain) | ar-BH | No |
Arabic (Egypt) | ar-EG | No |
Arabic (Iraq) | ar-IQ | No |
Arabic (Israel) | ar-IL | No |
Arabic (Jordan) | ar-JO | No |
Arabic (Kuwait) | ar-KW | No |
Arabic (Lebanon) | ar-LB | No |
Arabic (Mauritania) | ar-MR | No |
Arabic (Morocco) | ar-MA | No |
Arabic (Oman) | ar-OM | No |
Arabic (Qatar) | ar-QA | No |
Arabic (Saudi Arabia) | ar-SA | No |
Arabic (State of Palestine) | ar-PS | No |
Arabic (Tunisia) | ar-TN | No |
Arabic (United Arab Emirates) | ar-AE | No |
Arabic (Yemen) | ar-YE | No |
Armenian (Armenia) | hy-AM | No |
Azerbaijani (Azerbaijani) | az-AZ | No |
Basque (Spain) | eu-ES | No |
Bengali (Bangladesh) | bn-BD | No |
Bengali (India) | bn-IN | No |
Bosnian (Bosnia and Herzgovina) | bs-BA | No |
Bulgarian (Bulgaria) | bg-BG | No |
Burmese (Myanmar) | my-MM | No |
Catalan (Spain) | ca-ES | No |
Chinese, Cantonese (Traditional, Hong Kong) | yue-Hant-HK | No |
Chinese, Mandarin (Simplified, China) | cmn-Hans-CN | No |
Chinese, Mandarin (Simplified, Hong Kong) | cmn-Hans-HK | No |
Chinese, Mandarin (Traditional, Taiwan) | cmn-Hant-TW | No |
Croatian (Croatia) | hr-HR | No |
Czech (Czech Republic) | cs-CZ | No |
Danish (Denmark) | da-DK | No |
Dutch (Netherlands) | nl-NL | No |
Dutch (Belgium) | nl-BE | No |
English (Australia) | en-AU | No |
English (Canada) | en-CA | No |
English (Ghana) | en-GH | No |
English (Hong Kong) | en-HK | No |
English (India) | en-IN | No |
English (Ireland) | en-IE | No |
English (Kenya) | en-KE | No |
English (New Zealand) | en-NZ | No |
English (Nigeria) | en-NG | No |
English (Pakistan) | en-PK | No |
English (Philippines) | en-PH | No |
English (Singapore) | en-SG | No |
English (South Africa) | en-ZA | No |
English (Tanzania) | en-TZ | No |
English (United Kingdom) | en-GB | Yes |
English (United States) | en-US | Yes |
Estonian (Estonia) | et-EE | No |
Filipino (Philippines) | fil-PH | No |
Finnish (Finland) | fi-FI | No |
French (Belgium) | fr-BE | No |
French (Canada) | fr-CA | No |
French (France) | fr-FR | Yes |
French (Switzerland) | fr-CH | Yes |
Galician (Spain) | gl-ES | No |
Georgian (Georgia) | ka-GE | No |
German (Austria) | de-AT | No |
German (Germany) | de-DE | No |
German (Switzerland) | de-CH | No |
Greek (Greece) | el-GR | No |
Gujarati (India) | gu-IN | No |
Hebrew (Israel) | he-IL | No |
Hindi (India) | hi-IN | No |
Hungarian (Hungary) | hu-HU | No |
Icelandic (Iceland) | is-IS | No |
Indonesian (Indonesia) | id-ID | No |
Italian (Italy) | it-IT | No |
Italian (Switzerland) | it-CH | No |
Japanese (Japan) | ja-JP | Yes |
Javanese (Indonesia) | jv-ID | No |
Kannada (India) | kn-IN | No |
Kazakh (Kazakhistan) | kk-KZ | No |
Khmer (Cambodian) | km-KH | No |
Korean (South Korea) | ko-KR | No |
Lao (Laos) | lo-LA | No |
Latvian (Latvia) | lv-LV | No |
Lithuanian (Lithuania) | lt-LT | No |
Macedonian (North Macedonia) | mk-MK | No |
Malay (Malaysia) | ms-MY | No |
Malayalam (India) | ml-IN | No |
Marathi (India) | mr-IN | No |
Mongolian (Mongolia) | mn-MN | No |
Nepali (Nepal) | ne-NP | No |
Norwegian Bokmål (Norway) | nb-NO | No |
Persian (Iran) | fa-IR | No |
Polish (Poland) | pl-PL | No |
Portuguese (Brazil) | pt-BR | No |
Portuguese (Portugal) | pt-PT | No |
Punjabi (Gurmukhi India) | pa-guru-IN | No |
Romanian (Romania) | ro-RO | No |
Russian (Russia) | ru-RU | Yes |
Serbian (Serbia) | sr-RS | No |
Sinhala (Sri Lanka) | si-LK | No |
Slovak (Slovakia) | sk-SK | No |
Slovenian (Slovenia) | sl-SI | No |
Spanish (Argentina) | es-AR | No |
Spanish (Bolivia) | es-BO | No |
Spanish (Chile) | es-CL | No |
Spanish (Colombia) | es-CO | No |
Spanish (Costa Rica) | es-CR | No |
Spanish (Dominican Republic) | es-DO | No |
Spanish (Ecuador) | es-EC | No |
Spanish (El Salvador) | es-SV | No |
Spanish (Guatemala) | es-GT | No |
Spanish (Honduras) | es-HN | No |
Spanish (Mexico) | es-MX | No |
Spanish (Nicaragua) | es-NI | No |
Spanish (Panama) | es-PA | No |
Spanish (Paraguay) | es-PY | No |
Spanish (Peru) | es-PE | No |
Spanish (Puerto Rico) | es-PR | No |
Spanish (Spain) | es-ES | No |
Spanish (United States) | es-US | Yes |
Spanish (Uruguay) | es-UY | No |
Spanish (Venezuela) | es-VE | No |
Sundanese (Indonesia) | su-ID | No |
Swahili (Kenya) | sw-KE | No |
Swahili (Tanzania) | sw-TZ | No |
Swedish (Sweden) | sv-SE | No |
Tamil (India) | ta-IN | No |
Tamil (Malaysia) | ta-MY | No |
Tamil (Singapore) | ta-SG | No |
Tamil (Sri Lanka) | ta-LK | No |
Telugu (India) | te-IN | No |
Thai (Thailand) | th-TH | No |
Turkish (Turkey) | tr-TR | No |
Ukrainian (Ukraine) | uk-UA | No |
Urdu (India) | ur-IN | No |
Urdu (Pakistan) | ur-PK | No |
Uzbek (Uzbekistan) | uz-UZ | No |
Vietnamese (Vietnam) | vi-VN | No |
Zulu (South Africa) | zu-ZA | No |
Precisa de ajuda?
Às vezes, todos nós precisamos; a programação é difícil. Receba ajuda agora da nossa equipe de suporte, ou confie na sabedoria da multidão navegando pelo Stack Overflow Collective da Twilio ou buscando a tag Twilio no Stack Overflow.