VOICE INTERACTIVE S
ERVER
HTTP
GATEWAY
Versão 1.2
ÚLTIMAS ALTERAÇÕES
Versão 1.0 24/08/2020 Versão inicial
ÍNDICE
INTRODUÇÃO
Pág. 4
PLATAFORMA TÉCNICA
Pág. 4
Solicitação de envio de voz interativa
Pág. 5
Parâmetros de envio de voz
Pág. 5
Exemplos de solicitação
Pág. 9
Exemplo de solicitação básica
Pág. 9
Exemplo de solicitação CURL
Pág. 9
Exemplo de uma solicitação PHP
Pág. 9
Exemplo de solicitação PYTHON
Pág. 11
Exemplo de solicitação JAVA
Pág. 14
Exemplo de solicitação C#
Pág. 18
Códigos de status de resposta
Pág. 22
Exemplos de resposta
Pág. 22
INTRODUÇÃO
A plataforma REST Gateway permite ao utilizador enviar mensagens de voz via HTTP ou
HTTPS de forma simples e rápida, podendo enviar mais de 500 mensagens em uma
única solicitação. Para acessar suas estatísticas e informações de faturação, você pode
acessar a página https://www.360nrs.com com suas informações de utilizador.
Esta documentação descreve os parâmetros necessários para utilizar todas as
possibilidades de envio de mensagens de voz, seguindo as especificações REST. Tanto
as solicitações quanto as respostas da API REST estão no formato JSON, o que torna
muito fácil utilizar a API com qualquer linguagem de programação.
PLATAFORMA TÉCNICA
Cada solicitação feita deverá incluir a autenticação do cliente no cabeçalho da solicitação
http. Isso é feito ao utilizar a autenticação de acesso básico HTTP.
O cabeçalho de autorização é construído ao combinar a string "utilizador: palavra-passe”
e codificando-a em base64. Esta string é prefixada com a string "Autorização: Básica"
Por exemplo, para o utilizar “miuser” e a senha “mipass”, o cabeçalho resultante seria:
Autorização: Básico bWl1c2VyOm1pcGFzcw ==
É imprescindível utilizar a palavra-passe da api que é diferente da palavra-passe de
acesso principal, esta encontra-se na seção de perfil na secção de palavra-passe da api.
A seguir irá detalhar as opções de envio disponíveis, o URL para ligar e os parâmetros
REQUISIÇÃO
ENVIO DE VOZ INTERACTIVA
URL:
https://dashboard.360nrs.com/api/rest/voice-interactive
MÉTODO:
POST
PARÂMETROS
Parâmetro
Tipo
Obrigatório
Descrição
to
array
Sim
Destinatário do número de
telemóvel da mensagem. Você
deve incluir o prefixo (Ex: na
Espanha 34666666666). Este
campo permite que você indique
vários destinatários
callers
object
Não
Objeto com uma lista de
remetentes personalizados por
país para utilizar na chamada.
Se o remetente não for
especificado para um país
específico, o remetente padrão
será utilizado. Para definir um
remetente personalizado, entre
em contacto com o
departamento de suporte.
Exemplo:
{"ES": "6123456789", "PT":
"6987654321"}
scheduleDate
string
Não
Data em que a mensagem foi
enviada no formato UTC. Se
precisar enviar mensagens
programadas, você pode
especificar a data de envio
indicando a data no formato
AAAAmmddHHiiss (Ex:
20130215142000 seria 15 de
fevereiro de 2013 às 14:20:00).
Em caso de envio imediato, este
parâmetro não precisa ser
especificado.
expirationDate
string
Não
Permite determinar a data
máxima em que a chamada
pode ser feita. Após esse prazo,
a ligação será cancelada.
Especificar o período de
validade ativará
automaticamente as novas
tentativas de chamada, que
farão a chamada novamente se
o destinatário não atender a
chamada. A data deve estar no
formato AAAAmmddHHiiss (Ex:
20130215142000 seria 15 de
fevereiro de 2013 às 14h20)
campaignName
string
Sim
Nome da campanha
tags
array
Não
campaignName é necessário se
este parâmetro for especificado.
Lista de tags para adicionar à
campanha. As tags podem ser
utilizadas para filtrar as
estatísticas no painel.
menu
object
Sim
Define a árvore do menu em
seu discurso de abertura. Veja
os parâmetros do menu.
speechRetries
int
Não
Número de vezes que a
narração será repetida se o
destinatário não interagir,
valores possíveis na faixa de 1 a
10.
speechTimeoutSeconds int
Não
Este é um tempo de espera em
segundos antes de repetir a
fala, depende do parâmetro
speechRetries, pode ser um
valor de 1 a 30.
callRetries
int
Não
Número de tentativas de
chamada para destinatários,
valores possíveis no intervalo de
1 a 10.
costLimit
int
Não
Limite de portes de envio em
euros.Se o limite estabelecido
for atingido, a campanha será
pausada e você será avisado
por email.
availableTimes
array
Não
Indica os horários em que as
chamadas serão feitas, os
objetos json são definidos na
forma:
{dia: 1, de: "00:00" a: "23:59"}
day: é indicado um dia no
intervalo de segunda a domingo,
deve ser um número entre 1 e 7.
from: hora que define o início do
intervalo de tempo no formato
de 24 horas.
to: hora que define o fim do
intervalo de tempo no formato
de 24 horas.
Paramêtros de Menu:
Parámetro
Tipo
Obligatorio
Descripción
type
string
Sim
Define o tipo de fala se será a
conversão de texto para áudio
ou um ficheiro de áudio
específico.
Os valores podem ser apenas:
'fala' ou 'áudio'
Os parâmetros de mensagem,
idioma e género serão
necessários se 'fala' for
especificado
O parâmetro url será necessário
se o áudio for especificado
message
string
Não
Mensagem de texto. Ele pode
ter no máximo 500 caracteres.
O texto deve ser codificado em
UTF-8
language
string
Não
Idioma para converter o texto,
as opções são:
'en_GB' => 'Inglês - Reino
Unido',
'en_US' => 'Inglês - Estados
Unidos',
'es_CO' => 'Espanhol - Latim',
'es_ES' => 'Espanhol -
Espanha', 'pt_BR' => 'Português
- Brasil'
gender
string
Não
Género de voz, os valores
permitidos são 'F' para voz
feminina e 'M' para voz
masculina
url
string
Não
URL de localização do ficheiro
de áudio com esquema e nome
de domínio, por exemplo:
http://www.audios.com/audio.wa
v
O ficheiro de áudio deve ter a
seguinte codificação:
Profundidade de bits: 16 bits
Taxa de amostragem: 8.000 Hz
Formato: wav
Canal: Mono
menuOptions
array
Não
Você especifica se deseja
adicionar opções ao menu de
chamadas.
Se for especificado, não deve
estar vazio e deve conter pelo
menos duas opções, que
correspondem a uma opção de
erro ou omissão e pelo menos
mais uma opção adicional, estas
são explicadas na seção de
parâmetros de opção de menu.
cada uma dessas opções deve
ser especificada como um
objeto.
Parâmetros de opções de Menu:
Parámetro
Tipo
Obligatorio
Descripción
key
int
Sim
Tecla do telefone que o
destinatário pode selcionar, pois
a definição exclusiva da
chamada é -1 e de 1 a 9 para as
demais opções.
typeId
string
Sim
Define os tipos de opções de
menu, incluindo os seguintes
tipos:
'Play': reproduz uma mensagem
'CallTransfer': transferência de
chamadas.
‘GetDataWhilePlaying’:
submenu de chamada e coleta
de dados, este tipo é obrigatório
ao definir um menu para a
opção.
'RepeatMessage': repete a
mensagem atual.
‘AddToBlackList’: o destinatário
é adicionado à lista negra do
canal de voz interativo.
data
object
Sim
Corresponde aos mesmos
parâmetros de menu, com
exceção do parâmetro
menuOptions, e os parâmetros
devem ser adicionados se
typeId for CallTransfer:
telefone: corresponde ao
número do telefone para
transferir a chamada sem o
prefixo.
phonePrefix: corresponde ao
prefixo do telefone para o qual a
chamada será transferida.
menu
object
Não
Obrigatório se typeId tiver sido
especificado como
'GetDataWhilePlaying',
corresponde aos parâmetros do
menu incluindo menuOptions se
você quiser configurá-lo, mas
com a exceção de que suas
subopções podem não conter
mais um typeid igual a
'GetDataWhilePlaying', uma vez
que só é permitido submenus
até dois níveis.
EXEMPLO DE REQUISIÇÃO BÁSICA SPEECH
{"to":["34699999999"],"campaignName":"Test","menu":{"gender":"M","language":"es_ES","message":"Test","t
ype":"audio"}}
EXEMPLO DE REQUISIÇÃO BÁSICA AUDIO
{"to":["34699999999"],"campaignName":"Test","menu":{"url":"https://www.audio.com/audio.wav","type":"audio
"}}
EXEMPLO DE REQUISIÇÃO CURL
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Basic bWl1c2VyOm1pcGFzcw==" \
-d"{\"to\":[\"34699999999\"],\"campaignName\":\"Test\",\"menu\":{\"gender\":\"M\",\"language\":\"es_ES
\",\"message\":\"Test\",\"type\":\"audio\"}}" \
EXEMPLO DE REQUISIÇÃO PHP
<?php
$user = "miuser"; $password = "mipass";
$post["to"] = array("699999999");
$post['campaignName'] = "Campaña de prueba"; $post['menu'] = [
"gender" => "F", "language" => "es_ES",
"message" => "Hola, elija una de las siguientes opciones: 1. Transferir con Comercial. 2. Valorar nuestra atención al cliente. 3. Agregar al Blacklist. 4. Repetir mensaje",
"type" => "speech", "menuOptions" => [ [ "key" => -1, "typeId" => "Play", "data" => [ "gender" => "M", "language" => "es_ES",
"message" => "Ha elegido una opción incorrecta.", "type" => "speech" ] ], [ "key" => 1, "typeId" => "CallTransfer", "data" => [ "url" => "http://www.audios.com/audio.wav", "type" => "audio", "phone" => "699999999", "phonePrefix" => "34" ] ], [ "key" => 2, "typeId" => "GetDataWhilePlaying", "data" => [ "gender" => "M", "language" => "es_ES",
"message" => "Puntúe del 1 al 5 nuestra atención al cliente.", "type" => "speech"
],
"menu" => [
"gender" => "M", "language" => "es_ES",
"message" => "Puntúe del 1 al 5 nuestra atención al cliente.", "type" => "speech", "menuOptions" => [ [ "key" => 1, "typeId" => "Play", "data" => [ "gender" => "M", "language" => "es_ES",
"message" => "Gracias por valorar nuestra atención", "type" => "speech" ] ], [ "key" => 2, "typeId" => "Play", "data" => [ "gender" => "M", "language" => "es_ES",
"type" => "speech" ] ], [ "key" => 3, "typeId" => "Play", "data" => [ "gender" => "M", "language" => "es_ES",
"message" => "Gracias por valorar nuestra atención", "type" => "speech" ] ], [ "key" => 4, "typeId" => "Play", "data" => [ "gender" => "M", "language" => "es_ES",
"message" => "Gracias por valorar nuestra atención", "type" => "speech" ] ], [ "key" => 5, "typeId" => "Play", "data" => [ "gender" => "M", "language" => "es_ES",
"message" => "Gracias por valorar nuestra atención", "type" => "speech" ] ] ] ] ], [ "key" => 3, "typeId" => "AddToBlackList", "data" => [ "url" => "http://www.audios.com/audio.wav", "type" => "audio" ] ], [ "key" => 4, "typeId" => "RepeatMessage", ] ] ]; try { $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://dashboard.360nrs.com/api/rest/voice-interactive"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post)); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER,
array(
"Accept: application/json",
"Authorization: Basic ".base64_encode($user.":".$password))); $result = curl_exec($ch);
var_dump($result); } catch (Exception $exc) {
echo $exc->getTraceAsString(); }
EXEMPLO DE REQUISIÇÃO PYTHON
import base64 import json import pycurl if __name__ == "__main__": url = "https://dashboard.360nrs.com/api/rest/voice-interactive" usrPass = "miuser:mipass" data = json.dumps({ "to": ["34699999999"],
"campaignName": "Campaña de prueba", "menu": {
"gender": "F", "language": "es_ES",
"message": "Hola, elija una de las siguientes opciones: 1. Transferir con Comercial. 2. Valorar nuestra atención al cliente. 3. Agregar al Blacklist. 4. Repetir mensaje",
"type": "speech", "menuOptions": [ { "key": -1, "typeId": "Play", "data": { "gender": "M", "language": "es_ES",
"message": "Ha elegido una opción incorrecta.", "type": "speech" } }, { "key": 1, "typeId": "CallTransfer", "data": { "url": "http://www.audios.com/audio.wav", "type": "audio", "phone": "699999999", "phonePrefix": "34" } }, { "key": 2, "typeId": "GetDataWhilePlaying", "data": { "gender": "M", "language": "es_ES",
"message": "Puntúe del 1 al 5 nuestra atención al cliente.", "type": "speech"
},
"menu": {
"gender": "M", "language": "es_ES",
"type": "speech", "menuOptions": [ { "key": 1, "typeId": "Play", "data": { "gender": "M", "language": "es_ES",
"message": "Gracias por valorar nuestra atención", "type": "speech" } }, { "key": 2, "typeId": "Play", "data": { "gender": "M", "language": "es_ES",
"message": "Gracias por valorar nuestra atención", "type": "speech" } }, { "key": 3, "typeId": "Play", "data": { "gender": "M", "language": "es_ES",
"message": "Gracias por valorar nuestra atención", "type": "speech" } }, { "key": 4, "typeId": "Play", "data": { "gender": "M", "language": "es_ES",
"message": "Gracias por valorar nuestra atención", "type": "speech" } }, { "key": 5, "typeId": "Play", "data": { "gender": "M", "language": "es_ES",
"message": "Gracias por valorar nuestra atención", "type": "speech" } } ] } }, {
"key": 3, "typeId": "AddToBlackList", "data": { "url": "http://www.audios.com/audio.wav", "type": "audio" } }, { "key": 4, "typeId": "RepeatMessage" } ] } }) b64Val = base64.b64encode(usrPass)
headers = ["Accept:Application/json", "Authorization:Basic %s" % b64Val] c = pycurl.Curl() c.setopt(pycurl.URL, url) c.setopt(pycurl.HTTPHEADER, headers) c.setopt(pycurl.POST, 1) c.setopt(pycurl.POSTFIELDS, data) c.setopt(pycurl.SSL_VERIFYHOST, 0) c.setopt(pycurl.SSL_VERIFYPEER, 0) c.perform() http_code = c.getinfo(pycurl.HTTP_CODE) print(http_code)
EXEMPLO DE REQUISIÇÃO JAVA
import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import javax.net.ssl.HttpsURLConnection; import org.json.simple.JSONArray; import org.json.simple.JSONObject; public class ApiVoice {
public static void main(String args[]) throws IOException {
String url = "https://dashboard.360nrs.com/api/rest/voice-interactive"; URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection(); con.setRequestMethod("POST");
String userpass = "miuser" + ":" + "mipass"; String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary( userpass.getBytes("UTF-8") ); con.setRequestProperty("Authorization", basicAuth); con.setRequestProperty("Accept", "application/json"); JSONObject data = new JSONObject();
to.add("34666555444"); data.put("to", to);
data.put("campaignName", "Nombre Campaña"); JSONObject menu = new JSONObject();
menu.put( "message",
"Hola, elija una de las siguientes opciones: 1. Transferir con Comercial. 2. Valorar nuestra atención al cliente. 3. Agregar al Blacklist. 4. Repetir mensaje"
);
menu.put("gender", "F"); menu.put("language", "es_ES"); menu.put("type", "speech");
JSONArray menuOptions = new JSONArray();
JSONObject errorOrOmissionOption = new JSONObject(); JSONObject errorOrOmissionOptionData = new JSONObject(); errorOrOmissionOptionData.put("gender", "M");
errorOrOmissionOptionData.put("language", "es_ES"); errorOrOmissionOptionData.put(
"message",
"Ha elegido una opción incorrecta." ); errorOrOmissionOptionData.put("type", "speech"); errorOrOmissionOption.put("key", -1); errorOrOmissionOption.put("typeId", "Play"); errorOrOmissionOption.put("data", errorOrOmissionOptionData); menuOptions.add(errorOrOmissionOption);
JSONObject callTransferOption = new JSONObject(); JSONObject callTransferOptionData = new JSONObject();
callTransferOptionData.put("url", "http://www.audios.com/audio.wav"); callTransferOptionData.put("type", "audio"); callTransferOptionData.put("phone", "699999999"); callTransferOptionData.put("phonePrefix", "34"); callTransferOption.put("key", 1); callTransferOption.put("typeId", "CallTransfer"); callTransferOption.put("data", callTransferOptionData); menuOptions.add(callTransferOption);
JSONObject getDataWhilePlayingOption = new JSONObject(); JSONObject getDataWhilePlayingOptionData = new JSONObject(); JSONObject getDataWhilePlayingOptionMenu = new JSONObject(); JSONObject subMenuOptionOne = new JSONObject();
JSONObject subMenuOptionOneData = new JSONObject(); subMenuOptionOneData.put("gender", "M");
subMenuOptionOneData.put("language", "es_ES");
subMenuOptionOneData.put("message", "Gracias por valorar nuestra atención"); subMenuOptionOneData.put("type", "speech"); subMenuOptionOne.put("key", 1); subMenuOptionOne.put("typeId", "Play"); subMenuOptionOne.put("data", subMenuOptionOneData); getDataWhilePlayingOptionData.put("gender", "M"); getDataWhilePlayingOptionData.put("language", "es_ES"); getDataWhilePlayingOptionData.put(
"message",
"Puntúe del 1 al 5 nuestra atención al cliente." ); getDataWhilePlayingOptionData.put("type", "speech"); getDataWhilePlayingOption.put("key", 2); getDataWhilePlayingOption.put("typeId", "GetDataWhilePlaying"); getDataWhilePlayingOption.put("data", getDataWhilePlayingOptionData); getDataWhilePlayingOptionMenu.put("gender", "M"); getDataWhilePlayingOptionMenu.put("language", "es_ES"); getDataWhilePlayingOptionMenu.put( "message",
"Puntúe del 1 al 5 nuestra atención al cliente." );
getDataWhilePlayingOptionMenu.put("type", "speech");
JSONArray getDataWhilePlayingOptionMenuOptions = new JSONArray(); JSONObject subMenuOptionTwo = new JSONObject();
JSONObject subMenuOptionTwoData = new JSONObject(); subMenuOptionTwoData.put("gender", "M");
subMenuOptionTwoData.put("language", "es_ES");
subMenuOptionTwoData.put("message", "Gracias por valorar nuestra atención"); subMenuOptionTwoData.put("type", "speech");
subMenuOptionTwo.put("key", 2);
subMenuOptionTwo.put("typeId", "Play");
subMenuOptionTwo.put("data", subMenuOptionTwoData); JSONObject subMenuOptionOneThree = new JSONObject(); JSONObject subMenuOptionOneThreeData = new JSONObject(); subMenuOptionOneThreeData.put("gender", "M");
subMenuOptionOneThreeData.put("language", "es_ES"); subMenuOptionOneThreeData.put(
"message",
"Gracias por valorar nuestra atención" );
subMenuOptionOneThreeData.put("type", "speech"); subMenuOptionOneThree.put("key", 3);
subMenuOptionOneThree.put("typeId", "Play");
subMenuOptionOneThree.put("data", subMenuOptionOneThreeData); JSONObject subMenuOptionOneFour = new JSONObject();
JSONObject subMenuOptionOneFourData = new JSONObject(); subMenuOptionOneFourData.put("gender", "M");
subMenuOptionOneFourData.put("language", "es_ES"); subMenuOptionOneFourData.put(
"message",
"Gracias por valorar nuestra atención" );
subMenuOptionOneFourData.put("type", "speech"); subMenuOptionOneFour.put("key", 4);
subMenuOptionOneFour.put("typeId", "Play");
subMenuOptionOneFour.put("data", subMenuOptionOneFourData); JSONObject subMenuOptionOneFive = new JSONObject();
JSONObject subMenuOptionOneFiveData = new JSONObject(); subMenuOptionOneFiveData.put("gender", "M");
subMenuOptionOneFiveData.put( "message",
"Gracias por valorar nuestra atención" ); subMenuOptionOneFiveData.put("type", "speech"); subMenuOptionOneFive.put("key", 5); subMenuOptionOneFive.put("typeId", "Play"); subMenuOptionOneFive.put("data", subMenuOptionOneFiveData); getDataWhilePlayingOptionMenuOptions.add(subMenuOptionOne); getDataWhilePlayingOptionMenuOptions.add(subMenuOptionTwo); getDataWhilePlayingOptionMenuOptions.add(subMenuOptionOneThree); getDataWhilePlayingOptionMenuOptions.add(subMenuOptionOneFour); getDataWhilePlayingOptionMenuOptions.add(subMenuOptionOneFive); getDataWhilePlayingOptionMenu.put( "menuOptions", getDataWhilePlayingOptionMenuOptions ); getDataWhilePlayingOption.put("menu", getDataWhilePlayingOptionMenu); menuOptions.add(getDataWhilePlayingOption);
JSONObject blackListOption = new JSONObject(); JSONObject blackListOptionData = new JSONObject();
blackListOptionData.put("url", "http://www.audios.com/audio.wav"); blackListOptionData.put("type", "audio"); blackListOption.put("key", 3); blackListOption.put("typeId", "AddToBlackList"); blackListOption.put("data", blackListOptionData); menuOptions.add(blackListOption);
JSONObject repeatMessageOption = new JSONObject(); repeatMessageOption.put("key", 4);
repeatMessageOption.put("typeId", "RepeatMessage"); menuOptions.add(repeatMessageOption);
menu.put("menuOptions", menuOptions); data.put("menu", menu);
String jsonText = data.toJSONString(); con.setDoOutput(true);
try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) { wr.writeBytes(jsonText);
wr.flush(); wr.close(); }
BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream()) );
String inputLine;
StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } }
EXEMPLO DE REQUISIÇÃO C#
using System; using System.IO; using System.Net; using Newtonsoft.Json; namespace nrs_api { class Program {static void Main (string[] args) {
var httpWebRequest = (HttpWebRequest) WebRequest.Create ("https://dashboard.360nrs.com/api/rest/voice-interactive");
httpWebRequest.Method = "POST";
httpWebRequest.Accept = "application/json"; String username = "miuser";
String password = "mipass";
String encoded = System.Convert.ToBase64String (System.Text.Encoding.GetEncoding ("ISO-8859-1").GetBytes (username + ":" + password));
httpWebRequest.Headers.Add ("Authorization", "Basic " + encoded);
using (var streamWriter = new StreamWriter (httpWebRequest.GetRequestStream ())) { string[] to = new string[1];
to[0] = "34666555444";
var campaignName = "Nombre Campaña"; var menuOptions = new ArrayList (); var errorOrOmissionOptionData = new { gender = "M",
language = "es_ES",
message = "Ha elegido una opción incorrecta.", type = "speech"
};
var errorOrOmissionOption = new { key = -1,
typeId = "Play",
data = errorOrOmissionOptionData };
menuOptions.Add (errorOrOmissionOption); var callTransferData = new {
url = "http://www.audios.com/audio.wav", type = "audio",
phone = "699999999", phonePrefix = "34" };
var callTransfer = new { key = 1,
typeId = "CallTransfer", data = callTransferData };
menuOptions.Add (callTransfer); var getDataWhilePlayingData = new { gender = "M",
language = "es_ES",
message = "Puntúe del 1 al 5 nuestra atención al cliente.", type = "speech"
};
var getDataWhilePlayingMenuOptions = new ArrayList (); var getDataWhilePlayingMenuOptionsOneData = new { gender = "M",
message = "Gracias por valorar nuestra atención", type = "speech"
};
var getDataWhilePlayingMenuOptionsOne = new { key = 1,
typeId = "Play",
data = getDataWhilePlayingMenuOptionsOneData };
getDataWhilePlayingMenuOptions.Add (getDataWhilePlayingMenuOptionsOne); var getDataWhilePlayingMenuOptionsTwoData = new {
gender = "M", language = "es_ES",
message = "Gracias por valorar nuestra atención", type = "speech"
};
var getDataWhilePlayingMenuOptionsTwo = new { key = 2,
typeId = "Play",
data = getDataWhilePlayingMenuOptionsTwoData };
getDataWhilePlayingMenuOptions.Add (getDataWhilePlayingMenuOptionsTwo); var getDataWhilePlayingMenuOptionsThreeData = new {
gender = "M", language = "es_ES",
message = "Gracias por valorar nuestra atención", type = "speech"
};
var getDataWhilePlayingMenuOptionsThree = new { key = 3,
typeId = "Play",
data = getDataWhilePlayingMenuOptionsThreeData };
getDataWhilePlayingMenuOptions.Add (getDataWhilePlayingMenuOptionsThree); var getDataWhilePlayingMenuOptionsFourData = new {
gender = "M", language = "es_ES",
message = "Gracias por valorar nuestra atención", type = "speech"
};
var getDataWhilePlayingMenuOptionsFour = new { key = 4,
typeId = "Play",
data = getDataWhilePlayingMenuOptionsFourData };
getDataWhilePlayingMenuOptions.Add (getDataWhilePlayingMenuOptionsFour); var getDataWhilePlayingMenuOptionsFiveData = new {
gender = "M", language = "es_ES",
message = "Gracias por valorar nuestra atención", type = "speech"
};
var getDataWhilePlayingMenuOptionsFive = new { key = 5,
typeId = "Play",
data = getDataWhilePlayingMenuOptionsFiveData };
var getDataWhilePlayingMenu = new { gender = "M",
language = "es_ES",
message = "Puntúe del 1 al 5 nuestra atención al cliente.", type = "speech",
menuOptions = getDataWhilePlayingMenuOptions };
var getDataWhilePlaying = new { key = 2, typeId = "GetDataWhilePlaying", data = getDataWhilePlayingData, menu = getDataWhilePlayingMenu }; menuOptions.Add (getDataWhilePlaying); var addToBlackListData = new {
url = "http://www.audios.com/audio.wav", type = "audio"
};
var addToBlackList = new { key = 3,
typeId = "AddToBlackList", data = addToBlackListData };
menuOptions.Add (addToBlackList); var repeatMessage = new {
key = 4,
typeId = "RepeatMessage", };
menuOptions.Add (repeatMessage); var menu = new {
message = "Esto es un test de mensaje de voz", gender = "F",
language = "es_ES", menuOptions = menuOptions };
var data = new { to = to,
campaignName = campaignName, menu = menu
};
string json = JsonConvert.SerializeObject (data); streamWriter.Write (json);
streamWriter.Flush (); streamWriter.Close (); }
var httpResponse = (HttpWebResponse) httpWebRequest.GetResponse ();
using (var streamReader = new StreamReader (httpResponse.GetResponseStream ())) { var result = streamReader.ReadToEnd ();
Console.WriteLine (result); Console.ReadKey (); } } } }