Cliente Multi-Usuário do Telegram#
Vamos considerar um exemplo de robô que demonstra o funcionamento do cliente Telegram com vários usuários. Cada usuário pode interagir com o Chat GPT (utilizando um histórico de chat individual). A variável $NameSession especifica o nome da sessão, após o qual é necessário se autenticar no cliente.
Importante! Os dados de conexão com o Telegram podem ser encontrados no caminho: c:\Users\User\AppData\Roaming\Sherpa RPA Data\Telegram\
O projeto do robô consiste em dois diagramas.
O diagrama principal do projeto é assim (para conveniência, os blocos do diagrama estão numerados):
- Bloco “Início” (a partir deste bloco começa qualquer diagrama).
- O bloco “Processo” permite criar cenários compostos por vários diagramas. A execução do cenário continuará a partir do bloco “Início” do diagrama do projeto especificado. A execução do cenário retornará ao bloco atual e continuará no diagrama atual assim que o bloco “Fim” no diagrama externo for alcançado. Para o bloco “Processo” foi especificada a propriedade “Nome do diagrama” (nome do arquivo do diagrama onde a execução do cenário continuará).
- Bloco “Cliente. Criar conexão” permite criar uma conexão com o Telegram na forma de cliente. Para este bloco, foram especificadas as seguintes propriedades:
- Nome da sessão (nome da sessão);
- Tempo de espera (tempo de espera pela resposta do servidor Telegram em segundos).
Na saída, obtemos “Conexão” – uma variável com o objeto da conexão atual com o Telegram. Nos outros blocos, é necessário especificar exatamente essa variável.
Importante! Para manter a autenticação, é necessário definir um nome de sessão exclusivo e posteriormente usá-lo para a conexão. Na primeira execução, um formulário de autenticação será aberto. Para autenticação, será necessário inserir o telefone, em seguida, o serviço enviará um código que chegará ao cliente Telegram já conectado (por exemplo, no telefone). Em seguida, insira esse código e clique em “Autenticar”.
- Bloco “Cliente. Receber mensagem” permite receber uma mensagem da fila. Para este bloco, foi especificada a propriedade “Conexão” (objeto de conexão do cliente. O nome da variável nesta propriedade deve coincidir com o nome da variável na propriedade "Conexão", do bloco "Cliente. Criar conexão" do grupo Telegram, que foi usado anteriormente para conectar o cliente Telegram). Na saída, obtemos “Mensagem” (retorna o objeto da mensagem. Propriedades disponíveis: Id - id da mensagem; Data - data; De - de quem é a mensagem; Para - para quem é a mensagem; FromId - Id do usuário de quem é a mensagem; Título - título do chat; Texto - texto da mensagem; Tipo - designação textual do tipo de mensagem; IsFile - indica se há um arquivo na mensagem (aqui é possível determinar mais precisamente o tipo usando as propriedades IsDocument, IsPhoto). Por exemplo: $TMessage.IsPhoto - se for igual a $true, então há uma foto na mensagem).
Nota: se não houver mensagens na fila, um erro será gerado.
- Bloco “Atribuir valor à variável” define novos valores para uma ou mais variáveis. Neste caso, nas propriedades foi especificado um valor que deve ser atribuído a uma variável, respectivamente.
- Bloco “Obter caminho” permite descobrir o caminho completo para um arquivo/diretório. Para este bloco, foram especificadas as seguintes propriedades:
- Caminho para a pasta (caminho para a pasta onde o arquivo necessário está localizado);
- Nome do arquivo (nome do arquivo).
- Bloco “Container” permite ocultar o conteúdo. O conteúdo refere-se aos blocos que se originam do atual através do conector inferior. Para o funcionamento correto, os blocos deste contêiner devem terminar com o bloco “Fim”. Após a conclusão do trabalho dos blocos internos, será feita a transição pelo conector “Saída”. Neste caso, no contêiner "Carregando dados do cliente" você pode alternar "Prompts" (ou definir os seus) e assim indicar o comportamento do chatbot. O conteúdo do bloco “Container” para este diagrama é assim:
7.1 Bloco “Carregar do CSV” permite carregar uma tabela de dados de um documento CSV. Para este bloco, foram especificadas as seguintes propriedades:
- Caminho para o arquivo (caminho para o documento do qual é necessário carregar informações na Tabela de Dados);
- Delimitador (símbolo delimitador, por padrão é utilizado o ponto e vírgula);
- Codificação (codificação do arquivo).
7.2 Bloco “Executar expressão” inicia a execução de uma ou mais expressões em uma linguagem compatível com PowerShell. Neste caso, são utilizadas duas expressões.
7.3 Bloco “ToDo” é usado como um espaço reservado ou lembrete para funções planejadas para implementação. Ao contrário do bloco “Comentário”, este bloco é um elemento do cenário, mas não executa nenhuma ação.
7.4 – 7.11 Blocos “Adicionar linha” permitem adicionar uma linha à tabela de dados. Para os dados do bloco, foram especificadas as seguintes propriedades:
- Tabela (tabela de dados à qual a linha é adicionada);
- Valores (lista de valores da nova linha).
7.12 e 7.13 Bloco “Fim” (este bloco encerra a execução do script ou retorna o diagrama do subprocesso ao processo principal).
- Bloco “Adicionar linha” permite adicionar uma linha à tabela de dados. Para este bloco, as seguintes propriedades são especificadas:
- Table/Tabela (tabela de dados à qual a linha será adicionada);
- Values/Valores (lista de valores da nova linha).
- Bloco “Log” permite registrar mensagens arbitrárias e/ou valores de variáveis durante a execução do script do robô. Para este bloco, a propriedade “Valor” é especificada. Entre aspas, é indicada uma constante de texto, e o nome da variável começa com o símbolo $. Ou seja, este bloco registra no log do robô o ID do cliente e sua mensagem de texto. No Orquestrador, esta mensagem do robô será marcada como “Info”.
- Bloco “Solicitação ao ChatGPT” permite enviar solicitações para os novos modelos generativos da Open AI, começando com o ChatGPT. Com ele, você pode criar novos textos sob demanda, realizar diversas tarefas de classificação, sumarização, tradução e reescrita de textos, escrever protótipos de código em diferentes linguagens de programação, analisar dados semi-estruturados e não estruturados, extrair e processar fatos, manter diálogos sobre diversos temas, e muito mais. O pagamento pelo uso dessa funcionalidade é debitado da conta do cliente na plataforma. Para fins de teste, cada novo usuário tem a oportunidade de testar essa funcionalidade sem custo. Após o término do desenvolvimento do robô, o pagamento é necessário para usar essa funcionalidade. Para este bloco, as seguintes propriedades são especificadas:
- Histórico de chat (histórico de chat, com base no contexto do qual a rede neural deve gerar uma resposta);
- Modelo (modelo para geração de resposta);
- Temperatura (número decimal entre 0 e 1, que indica o grau de "aleatoriedade" ou "criatividade" do resultado, onde 0 é o resultado menos criativo e 1 é o mais aleatório);
- Comprimento máximo (comprimento máximo do resultado, expresso em tokens condicionais);
- Auto-limitação de comprimento (o flag definido ativa a correção automática do comprimento máximo do resultado);
- Timeout (tempo máximo de espera pela resposta em segundos).
- Bloco “Adicionar linha” permite adicionar uma linha à tabela de dados. Para este bloco, as seguintes propriedades são especificadas:
- Table/Tabela (tabela de dados à qual a linha será adicionada);
- Values/Valores (lista de valores da nova linha).
- Bloco “Log” permite registrar mensagens arbitrárias e/ou valores de variáveis durante a execução do script do robô. Para este bloco, a propriedade “Valor” é especificada. Entre aspas, é indicada uma constante de texto, e o nome da variável começa com o símbolo $. Ou seja, este bloco registra no log do robô o ID do cliente e a resposta à sua solicitação. No Orquestrador, esta mensagem do robô será marcada como “Info”.
- Bloco “Cliente. Enviar mensagem” permite enviar uma mensagem de texto. Para este bloco, as seguintes propriedades são especificadas:
- Conexão (objeto de conexão do cliente. O nome da variável nesta propriedade deve coincidir com o nome da variável na propriedade "Conexão", do bloco "Cliente. Criar conexão" do grupo Telegram, que foi usado anteriormente para conectar o cliente Telegram);
- Destino (objeto de destino. Esta string pode conter os seguintes valores: Id do chat, nome do chat, Id do usuário, combinação "PrimeiroNome ÚltimoNome" do usuário, valor do Username do usuário, telefone do usuário);
- Resposta à mensagem (ID da mensagem à qual é necessário responder);
- Texto (texto da mensagem).
- Bloco “Salvar em CSV” permite salvar a tabela de dados em um documento CSV. Para este bloco, as seguintes propriedades são especificadas:
- Tabela de Dados (tabela de dados que deve ser salva no documento);
- Caminho para o arquivo (caminho para o documento onde a Tabela de Dados deve ser salva);
- Delimitador (símbolo delimitador, por padrão é utilizado ponto e vírgula);
- Codificação (codificação do arquivo);
- Gravar cabeçalhos (o flag definido ativa a gravação dos cabeçalhos da tabela).
- Unidade de medida (unidade de medida na qual a duração da pausa é especificada);
- Duração (valor do intervalo de tempo nas unidades de medida especificadas).
- Bloco “Requer Parada” verifica a necessidade de parar o script.
Para este bloco, na saída, na linha “Resultado” está especificada a variável $NeedStop.
- Bloco “Fim” (este bloco encerra a execução do script ou retorna o diagrama do subprocesso ao processo principal).
Diagrama “Configurações”
- Bloco “Início” (a partir deste bloco, qualquer diagrama começa).
- Bloco “Unir Caminho” une linhas em um caminho. Para este bloco, a propriedade “Caminho Inicial” está especificada.
- Bloco “Criar Pasta” permite criar uma nova pasta. Para este bloco, a propriedade “Nome da Pasta” (nome completo da nova pasta) está especificada.
- Bloco “Fim” (este bloco encerra a execução do script ou retorna o diagrama do subprocesso ao processo principal).