hitagi-entrada/docs/manual-json.txt

1147 lines
26 KiB
Plaintext
Raw Normal View History

2024-12-14 01:14:11 +00:00
JSON Ligações de entrada
--------------------------------------------------------------------------------------------------------------------------------
CMDs
--------------------------------------------------------------------------------------------------------------------------------
start
Determina o inicio do fluxograma, passando o numero do DID no atributo value.
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
--------------------------------------------------------------------------------------------------------------------------------
blacklist.check
Verifica se o callerid esta na blacklist.
Caso esteja na lista, a ligação é encaminhado para o CMD blacklist.true
Caso não esteja na lista, a ligação é encaminhado para o CMD blacklist.false
[
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "2000"
},
{
"id": "2",
"idmaster": "1",
"cmd": "blacklist.check",
"value": ""
},
{
"id": "3",
"idmaster": "2",
"cmd": "blacklist.true",
"value": ""
},
{
"id": "4",
"idmaster": "3",
"cmd": "playaudio",
"value": "vm-goodbye.wav",
"value2": "2",
"value3": "1",
"value4": "false"
},
{
"id": "5",
"idmaster": "2",
"cmd": "blacklist.false",
"value": ""
},
{
"id": "6",
"idmaster": "5",
"cmd": "playaudio",
"value": "demo-echotest.wav",
"value2": "2",
"value3": "1",
"value4": "false"
}
]
--------------------------------------------------------------------------------------------------------------------------------
callerid.change
Altera o callerid passado pelo atributo value
O parametro pode ser passado em value2 num, all, name, etc... Se não passar ele usa num
[
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "2000"
},
{
"id": "2",
"idmaster": "1",
"cmd": "callerid.change",
"value": "5555555",
"value2": "num"
},
{
"id": "3",
"idmaster": "2",
"cmd": "playaudio",
"value": "vm-goodbye.wav",
"value2": "2",
"value3": "1",
"value4": "false"
}
]
--------------------------------------------------------------------------------------------------------------------------------
digit
Confere o valor digitado se igual ao passado no atributo value.
Caso ocorra um digito. Encaminha a ligação para o CMD seguintem referente ao valor do digito.
Caso não ocorra um digito em 10 segundos. Encaminha para o CMD "timeout" em paralelo ao CMD "digit".
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "demo-echotest.wav"
},
{
"id": "3",
"idmaster": "2",
"cmd": "digit",
"value": "1"
},
{
"id": "4",
"idmaster": "3",
"cmd": "dialgroupextension",
"value": "7"
},
{
"id": "5",
"idmaster": "2",
"cmd": "timeout",
"value": ""
}
--------------------------------------------------------------------------------------------------------------------------------
dialdigit
Toca o ramal digitado.
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "demo-echotest.wav"
},
{
"id": "3",
"idmaster": "2",
"cmd": "dialdigit",
"value": ""
}
--------------------------------------------------------------------------------------------------------------------------------
dialgroupextension
Toca todos os ramais que pertencem ao id de grupo passado no atributo value:
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "dialgroupextension",
"value": "7"
}
--------------------------------------------------------------------------------------------------------------------------------
dialplan.checkvar
Coleta variável da memória do asterisk, verificando se "deu match". Para seguir um rota específica do IVR após o "match".
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "bemvindo-digitecpf.wav"
},
{
"id": "3",
"idmaster": "2",
"cmd": "custom",
"variation": "1",
"defaultvalues": {
"cmd": "dialplan.setvar",
"varname": "CPF"
}
},
{
"id": "4",
"idmaster": "3",
"cmd": "custom",
"variation": "2",
"defaultvalues": {
"cmd": "dialplan.checkvar",
"varname": "CPF",
"varvalue": "123456"
}
},
{
"id": "5",
"idmaster": "4",
"cmd": "playaudio",
"value": "cpfvalidado.wav"
}
--------------------------------------------------------------------------------------------------------------------------------
dialplan.gosub
Direciona a ligação para um trecho do dialplan do asterisk (A ligação volta ao IVR, caso não execute hangup no dialplan).
Atributo ctxname é o nome do contexto no dialplan.
Atributo ctxexten é o ${EXTEN} passado para o contexto do diaplan (Se não informado vai passar o valor 1001).
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "bemvindo-digitecpf.wav"
},
{
"id": "3",
"idmaster": "2",
"cmd": "custom",
"variation": "1",
"defaultvalues": {
"cmd": "dialplan.gosub",
"ctxname": "unimed",
"ctxexten": "1001"
}
}
--------------------------------------------------------------------------------------------------------------------------------
dialplan.setvar
Armazena na memória do asterisk, variável de nome passado no atributo "varname", o último valor digitado no IVR.
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "bemvindo-digitecpf.wav"
},
{
"id": "3",
"idmaster": "2",
"cmd": "custom",
"variation": "1",
"defaultvalues": {
"cmd": "dialplan.setvar",
"varname": "CPF"
}
}
--------------------------------------------------------------------------------------------------------------------------------
digitinvalid
Encaminha a ligação para o CMD seguinte, caso tenha sido digitado uma opção "inválida" de digito na URA.
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "demo-echotest.wav"
},
{
"id": "3",
"idmaster": "2",
"cmd": "digit",
"value": "1"
},
{
"id": "4",
"idmaster": "3",
"cmd": "dialgroupextension",
"value": "7"
},
{
"id": "5",
"idmaster": "2",
"cmd": "digitinvalid",
"value": ""
},
{
"id": "6",
"idmaster": "5",
"cmd": "playaudio",
"value": "ddigito-invalido.wav"
}
--------------------------------------------------------------------------------------------------------------------------------
dialextension
Toca o ramal informado no atributo value.
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "dialextension",
"value": "2601"
}
--------------------------------------------------------------------------------------------------------------------------------
cnpj.check
Verifica se o CNPJ digitado é válido.
No atributo value é passao o número máximo de tentativas (zero ou vazio para infinitas)
Caso seja válido. A ligação é encaminhado para o CMD cnpj.true
Caso não seja válido. A ligação é encaminhado para o CMD cnpj.false
Caso atinja o limite. A ligação é encaminhado para o CMD cnpj.limit
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "demo-echotest.wav",
"value2": "3",
"value3": "11",
"value4": "true"
},
{
"id": "3",
"idmaster": "2",
"cmd": "cnpj.check",
"value": ""
},
{
"id": "4",
"idmaster": "3",
"cmd": "cnpj.true",
"value": ""
},
{
"id": "5",
"idmaster": "3",
"cmd": "cnpj.false",
"value": ""
}
--------------------------------------------------------------------------------------------------------------------------------
condtempo.check
Verifica se esta em alguma condição de tempo.
Caso positivo. A ligação é encaminhado para o CMD condtempo.true
Caso negativo. A ligação é encaminhado para o CMD condtempo.false
O campo value é o id da tab_periodo
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "condtempo.check",
"value": "12"
},
{
"id": "3",
"idmaster": "2",
"cmd": "condtempo.true",
"value": ""
},
{
"id": "4",
"idmaster": "2",
"cmd": "condtempo.false",
"value": ""
}
--------------------------------------------------------------------------------------------------------------------------------
cpf.check
Verifica se o CPF digitado é válido.
No atributo value é passao o número máximo de tentativas (zero ou vazio para infinitas)
Caso seja válido. A ligação é encaminhado para o CMD cpf.true
Caso não seja válido. A ligação é encaminhado para o CMD cpf.false
Caso atinja o limite. A ligação é encaminhado para o CMD cnpj.limit
[
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "2000"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "demo-echotest.wav",
"value2": "3",
"value3": "11",
"value4": "false"
},
{
"id": "3",
"idmaster": "2",
"cmd": "cpf.check",
"value": "2"
},
{
"id": "4",
"idmaster": "3",
"cmd": "cpf.true",
"value": ""
},
{
"id": "5",
"idmaster": "3",
"idnext": "2",
"cmd": "cpf.false",
"value": ""
},
{
"id": "6",
"idmaster": "3",
"cmd": "cpf.limit",
"value": ""
},
{
"id": "7",
"idmaster": "6",
"cmd": "playaudio",
"value": "vm-goodbye.wav",
"value2": "2",
"value3": "1",
"value4": "false"
},
{
"id": "8",
"idmaster": "4",
"cmd": "playaudio",
"value": "vm-intro.wav",
"value2": "2",
"value3": "1",
"value4": "false"
}
]
--------------------------------------------------------------------------------------------------------------------------------
expediente.check
Verifica se esta em horário de expediente. Não precisa passar nenhuma informação nos atributos value.
Caso estaja em horário de expediente. A ligação é encaminhado para o CMD expediente.true
Caso não estaja em horário de expediente. A ligação é encaminhado para o CMD expediente.false
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "expediente.check",
"value": ""
},
{
"id": "3",
"idmaster": "2",
"cmd": "expediente.true",
"value": ""
},
{
"id": "4",
"idmaster": "2",
"cmd": "expediente.false",
"value": ""
}
--------------------------------------------------------------------------------------------------------------------------------
feriado.check
Verifica se é feriado cadastrado.
Não precisa passar nenhuma informação nos atributos value.
Caso seja feriado cadastrado. A ligação é encaminhado para o CMD feriado.true
Caso não seja feriado cadastrado. A ligação é encaminhado para o CMD feriado.false
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "feriado.check",
"value": ""
},
{
"id": "3",
"idmaster": "2",
"cmd": "feriado.true",
"value": ""
},
{
"id": "4",
"idmaster": "2",
"cmd": "expediente.false",
"value": ""
}
--------------------------------------------------------------------------------------------------------------------------------
ivr.redirect
Encaminha a ligação para outro IVR (passado no atributo value).
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "ivr.redirect",
"value": "080012344321"
}
--------------------------------------------------------------------------------------------------------------------------------
pesqsat
Executa o audio da pesquisa de satisfação e salva a nota digitada no id da pesquisa de satisfação passada no atributo value
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "pesquisa.wav"
},
{
"id": "3",
"idmaster": "2",
"cmd": "pesqsat",
"value": "1"
},
--------------------------------------------------------------------------------------------------------------------------------
playaudio
Toca um arquivo de audio informando o arquivo no atributo value.
Atributo value2 => Timeout em segundos
Atributo value3 => Máximo de digitos esperado
Atributo value4 => Pronuncia os numeros digitados se passado o valor: true
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "demo-echotest.wav",
"value2": "3",
"value3": "11",
"value4": "true"
}
--------------------------------------------------------------------------------------------------------------------------------
playaudiotext
Toca um audio a partir do texto passado no atributo value.
Atributo value2 => Timeout em segundos
Atributo value3 => Máximo de digitos esperado
Atributo value4 => Pronuncia os numeros digitados se passado o valor: true
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudiotext",
"value": "Testando 123"
"value2": "3",
"value3": "11",
"value4": "true"
}
--------------------------------------------------------------------------------------------------------------------------------
queue
Executa uma fila de antendimento. O id da fila é passado no atributo value.
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "queue",
"value": "4"
}
--------------------------------------------------------------------------------------------------------------------------------
queue.logadd
Adiciona registro no queuelog.
value é o id da fila de atendimento
value2 pode ser IVRSTART ou IVRAPPEND
value3 é o texto digitado no IVR
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "queue.logadd",
"value": "3",
"value2": "IVRSTART",
"value3": "AGUARDOU"
}
--------------------------------------------------------------------------------------------------------------------------------
record
Inicia a gravação da ligação. Não precisa passar nenhuma informação nos atributos value.
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "record",
"value": ""
}
--------------------------------------------------------------------------------------------------------------------------------
timeout
Executa a partir de um evento "timeout" do CMD anterior ou em paralelo (ex.: CMD "digit"). Encaminhando a ligação para o CMD seguinte.
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "demo-echotest.wav"
},
{
"id": "3",
"idmaster": "2",
"cmd": "digit",
"value": "1"
},
{
"id": "4",
"idmaster": "3",
"cmd": "dialgroupextension",
"value": "7"
},
{
"id": "5",
"idmaster": "2",
"cmd": "timeout",
"value": ""
},
{
"id": "6",
"idmaster": "5",
"cmd": "dialextension",
"value": "2601"
}
--------------------------------------------------------------------------------------------------------------------------------
whitelist.check
Verifica se o callerid esta na whitelist.
Caso esteja na lista, a ligação é encaminhado para o CMD whitelist.true
Caso não esteja na lista, a ligação é encaminhado para o CMD whitelist.false
[
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "2000"
},
{
"id": "2",
"idmaster": "1",
"cmd": "whitelist.check",
"value": ""
},
{
"id": "3",
"idmaster": "2",
"cmd": "whitelist.true",
"value": ""
},
{
"id": "4",
"idmaster": "3",
"cmd": "playaudio",
"value": "demo-echotest.wav",
"value2": "2",
"value3": "1",
"value4": "false"
},
{
"id": "5",
"idmaster": "2",
"cmd": "whitelist.false",
"value": ""
},
{
"id": "6",
"idmaster": "5",
"cmd": "playaudio",
"value": "vm-goodbye.wav",
"value2": "2",
"value3": "1",
"value4": "false"
}
]
--------------------------------------------------------------------------------------------------------------------------------
CMD que conecta com outro CMD
--------------------------------------------------------------------------------------------------------------------------------
Informe o "idnext" para após executar o comando, o fluxo seguir para o próximo item que esta no "idnext"
Abaixo, exemplo de loop infinito tocando o audio.
{
"id": "1",
"idmaster": "1",
"cmd": "start",
"value": "551138118400"
},
{
"id": "2",
"idmaster": "1",
"cmd": "playaudio",
"value": "demo-echotest.wav"
},
{
"id": "3",
"idmaster": "2",
"idnext": "2",
"cmd": "timeout",
"value": ""
}
--------------------------------------------------------------------------------------------------------------------------------
Regras de negócio
--------------------------------------------------------------------------------------------------------------------------------
Conexões CMD "master" => "child" permitidas
start => callerid.change
start => dialgroupextension
start => dialextention
start => cnpj.check
start => cpf.check
start => expediente.check
start => feriado.check
start => playaudio
start => playaudiotext
start => queue
start => record
callerid.change => dialgroupextension
callerid.change => dialextention
callerid.change => cnpj.check
callerid.change => cpf.check
callerid.change => expediente.check
callerid.change => feriado.check
callerid.change => playaudio
callerid.change => playaudiotext
callerid.change => queue
callerid.change => record
dialgroupextension => timeout
dialextension => timeout
digit => callerid.change
digit => dialgroupextension
digit => dialextention
digit => cnpj.check
digit => cpf.check
digit => expediente.check
digit => feriado.check
digit => playaudio
digit => playaudiotext
digit => queue
digit => record
digitinvalid => callerid.change
digitinvalid => dialgroupextension
digitinvalid => dialextention
digitinvalid => cnpj.check
digitinvalid => cpf.check
digitinvalid => expediente.check
digitinvalid => feriado.check
digitinvalid => playaudio
digitinvalid => playaudiotext
digitinvalid => queue
digitinvalid => record
blacklist.check => blacklist.false
blacklist.check => blacklist.true
blacklist.false => callerid.change
blacklist.false => dialgroupextension
blacklist.false => dialextension
blacklist.false => expediente.check
blacklist.false => feriado.check
blacklist.false => playaudio
blacklist.false => playaudiotext
blacklist.false => queue
blacklist.false => record
blacklist.true => callerid.change
blacklist.true => dialgroupextension
blacklist.true => dialextension
blacklist.true => feriado.check
blacklist.true => expediente.check
blacklist.true => playaudio
blacklist.true => playaudiotext
blacklist.true => queue
blacklist.true => record
cnpj.check => cnpj.false
cnpj.check => cnpj.true
cnpj.check => cnpj.limit
cnpj.false => callerid.change
cnpj.false => dialgroupextension
cnpj.false => dialextension
cnpj.false => expediente.check
cnpj.false => feriado.check
cnpj.false => playaudio
cnpj.false => playaudiotext
cnpj.false => queue
cnpj.false => record
cnpj.true => callerid.change
cnpj.true => dialgroupextension
cnpj.true => dialextension
cnpj.true => feriado.check
cnpj.true => expediente.check
cnpj.true => playaudio
cnpj.true => playaudiotext
cnpj.true => queue
cnpj.true => record
cnpj.limit => callerid.change
cnpj.limit => dialgroupextension
cnpj.limit => dialextension
cnpj.limit => feriado.check
cnpj.limit => expediente.check
cnpj.limit => playaudio
cnpj.limit => playaudiotext
cnpj.limit => queue
cnpj.limit => record
cpf.check => cpf.false
cpf.check => cpf.true
cpf.check => cpf.limit
cpf.false => callerid.change
cpf.false => dialgroupextension
cpf.false => dialextension
cpf.false => expediente.check
cpf.false => feriado.check
cpf.false => playaudio
cpf.false => playaudiotext
cpf.false => queue
cpf.false => record
cpf.true => callerid.change
cpf.true => dialgroupextension
cpf.true => dialextension
cpf.true => feriado.check
cpf.true => expediente.check
cpf.true => playaudio
cpf.true => playaudiotext
cpf.true => queue
cpf.true => record
cpf.limit => callerid.change
cpf.limit => dialgroupextension
cpf.limit => dialextension
cpf.limit => feriado.check
cpf.limit => expediente.check
cpf.limit => playaudio
cpf.limit => playaudiotext
cpf.limit => queue
cpf.limit => record
expediente.check => expediente.false
expediente.check => expediente.true
expediente.false => callerid.change
expediente.false => dialgroupextension
expediente.false => dialextention
expediente.false => feriado.check
expediente.false => playaudio
expediente.false => playaudiotext
expediente.false => queue
expediente.false => record
expediente.true => callerid.change
expediente.true => dialgroupextension
expediente.true => dialextention
expediente.true => feriado.check
expediente.true => playaudio
expediente.true => playaudiotext
expediente.true => queue
expediente.true => record
feriado.check => feriado.false
feriado.check => feriado.true
feriado.false => callerid.change
feriado.false => dialgroupextension
feriado.false => dialextention
feriado.false => expediente.check
feriado.false => playaudio
feriado.false => playaudiotext
feriado.false => queue
feriado.false => record
feriado.true => callerid.change
feriado.true => dialgroupextension
feriado.true => dialextention
feriado.true => expediente.check
feriado.true => playaudio
feriado.true => playaudiotext
feriado.true => queue
feriado.true => record
playaudio => callerid.change
playaudio => dialgroupextension
playaudio => dialextention
playaudio => digit
playaudio => digitinvalid
playaudio => cnpj.check
playaudio => cpf.check
playaudio => expediente.check
playaudio => feriado.check
playaudio => playaudio
playaudio => playaudiotext
playaudio => queue
playaudio => record
playaudiotext => callerid.change
playaudiotext => dialgroupextension
playaudiotext => dialextention
playaudiotext => digit
playaudiotext => digitinvalid
playaudiotext => cnpj.check
playaudiotext => cpf.check
playaudiotext => expediente.check
playaudiotext => feriado.check
playaudiotext => playaudio
playaudiotext => playaudiotext
playaudiotext => queue
playaudiotext => record
record => callerid.change
record => dialgroupextension
record => dialextention
record => expediente.check
record => feriado.check
record => playaudio
record => playaudiotext
record => queue
timeout => callerid.change
timeout => dialgroupextension
timeout => dialextention
timeout => expediente.check
timeout => feriado.check
timeout => playaudio
timeout => playaudiotext
timeout => queue
timeout => record
whitelist.check => whitelist.false
whitelist.check => whitelist.true
whitelist.false => callerid.change
whitelist.false => dialgroupextension
whitelist.false => dialextension
whitelist.false => expediente.check
whitelist.false => feriado.check
whitelist.false => playaudio
whitelist.false => playaudiotext
whitelist.false => queue
whitelist.false => record
whitelist.true => callerid.change
whitelist.true => dialgroupextension
whitelist.true => dialextension
whitelist.true => feriado.check
whitelist.true => expediente.check
whitelist.true => playaudio
whitelist.true => playaudiotext
whitelist.true => queue
whitelist.true => record
--------------------------------------------------------------------------------------------------------------------------------
Conexões CMD permitidas em paralelo
blacklist.true => blacklist.false
blacklist.false => blacklist.true
cnpj.true => cnpj.false
cnpj.true => cnpj.limit
cnpj.false => cnpj.limit
cnpj.false => cnpj.true
cnpj.limit => cnpj.false
cnpj.limit => cnpj.true
cpf.true => cpf.false
cpf.true => cpf.limit
cpf.false => cpf.limit
cpf.false => cpf.true
cpf.limit => cpf.false
cpf.limit => cpf.true
digit <=> digit
digit <=> digitinvalid
digit <=> timeout
expediente.true <=> expediente.false
expediente.false <=> expediente.true
feriado.true <=> feriado.false
feriado.false <=> feriado.true
timeout <=> digit
timeout <=> digitinvalid
whitelist.true <=> whitelist.false
whitelist.false <=> whitelist.true
--------------------------------------------------------------------------------------------------------------------------------