Funções do Dialplan do Asterisk 21
Comando:
FILE()
Sinopse:
Read or write text file.
Descrição:A função
FILE() permite ler e escrever em arquivos de texto, tanto em modo de caracteres (bytes) quanto em modo de linhas. É útil para manipular dados armazenados em arquivos diretamente no dialplan do Asterisk.
A sintaxe geral é
FILE(filename, offset, length, options, format), onde:
filename: O caminho para o arquivo.offset: A posição inicial para leitura ou escrita. Pode ser um número positivo (byte ou linha), ou negativo (contagem a partir do final do arquivo).length: O número de bytes ou linhas a serem lidos ou escritos. Pode ser negativo para indicar o número de bytes/linhas a serem removidos do final do arquivo.options: Opções para controlar o modo de operação (l para modo de linha, a para anexar, d para não adicionar nova linha em escrita).format: Especifica o formato de quebra de linha (u para Unix, d para DOS, m para Macintosh).
Exemplos de leitura (modo byte):same => n,Set(foo=${FILE(/tmp/test.txt)}): Lê todo o conteúdo do arquivo.same => n,Set(foo=${FILE(/tmp/test.txt,10)}): Lê a partir do 11º byte até o final do arquivo.same => n,Set(foo=${FILE(/tmp/test.txt,10,10)}): Lê do 11º ao 20º byte.
Exemplos de leitura (modo linha):same => n,Set(foo=${FILE(/tmp/test.txt,3,1,l)}): Lê a 3ª linha do arquivo.same => n,Set(foo=${FILE(/tmp/test.txt,3,2,l)}): Lê a 3ª e 4ª linhas.same => n,Set(foo=${FILE(/tmp/test.txt,3,,l)}): Lê da 3ª linha até o final.same => n,Set(foo=${FILE(/tmp/test.txt,-3,,l)}): Lê as últimas 3 linhas.same => n,Set(foo=${FILE(/tmp/test.txt,3,1,l,d)}): Lê a 3ª linha de um arquivo formatado em DOS.
Exemplos de escrita:same => n,Set(FILE(/tmp/test.txt)=bar): Trunca o arquivo e escreve "bar".same => n,Set(FILE(/tmp/test.txt,,,a)=bar): Anexa "bar" ao final do arquivo.same => n,Set(FILE(/tmp/test.txt,0,1)=bar): Substitui o primeiro byte por "bar".same => n,Set(FILE(/tmp/test.txt,20,10)=bar): Substitui 10 bytes a partir do 21º byte por "bar".same => n,Set(FILE(/tmp/test.txt,20)=bar): Substitui todos os bytes a partir do 21º byte por "bar".same => n,Set(FILE(/tmp/test.txt,4,0)=bar): Insere "bar" após o 4º caractere.
Exemplos de escrita (modo linha):same => n,Set(FILE(/tmp/foo.txt,0,1,l)=bar): Substitui a primeira linha por "bar".same => n,Set(FILE(/tmp/foo.txt,-1,,l)=bar): Substitui a última linha por "bar".same => n,Set(FILE(/tmp/foo.txt,,,al)=bar): Anexa "bar" ao arquivo com uma nova linha.
Observação: Se a opção
live_dangerously no arquivo
asterisk.conf estiver definida como "no", esta função só pode ser executada a partir do dialplan, e não diretamente de protocolos externos.
Sintaxe:
same => n,Set(foo=${FILE(/tmp/test.txt)})
same => n,Set(foo=${FILE(/tmp/test.txt,10)})
same => n,Set(foo=${FILE(/tmp/test.txt,10,10)})
same => n,Set(foo=${FILE(/tmp/test.txt,3,1,l)})
same => n,Set(foo=${FILE(/tmp/test.txt,3,2,l)})
same => n,Set(foo=${FILE(/tmp/test.txt,3,,l)})
same => n,Set(foo=${FILE(/tmp/test.txt,-3,,l)})
same => n,Set(foo=${FILE(/tmp/test.txt,3,1,l,d)})
same => n,Set(FILE(/tmp/test.txt)=bar)
same => n,Set(FILE(/tmp/test.txt,,,a)=bar)
same => n,Set(FILE(/tmp/test.txt,0,1)=bar)
same => n,Set(FILE(/tmp/test.txt,20,10)=bar)
same => n,Set(FILE(/tmp/test.txt,20)=bar)
same => n,Set(FILE(/tmp/test.txt,4,0)=bar)
same => n,Set(FILE(/tmp/foo.txt,0,1,l)=bar)
same => n,Set(FILE(/tmp/foo.txt,-1,,l)=bar)
same => n,Set(FILE(/tmp/foo.txt,,,al)=bar)
FILE(filename,offset,length,options,format)
Fonte: Asterisk Wiki