Alice, compre um Yandex.
- Ordem de compra do Yandex a preço de mercado, código: YNDX, número de ações: 1, para confirmar, diga "eu confirmo", para cancelar, diga "não".
- Eu confirmo.
- A aplicação foi executada.
Estou criando uma interface de voz de código aberto para realizar transações com valores mobiliários na Bolsa de Moscou. Ele chocou a idéia desde a infância. Lembro-me da primeira vez que vi um assistente de voz em um filme cerca de vinte anos atrás, naquela época nem tinha um telefone com fio em minha casa. E agora tenho uma conexão ilimitada à Internet, uma conta de corretagem, que posso gerenciar através de um smartphone. Por vinte anos, a tecnologia se tornou mais acessível.
Como tudo começou
Um ano e meio atrás, Yandex.Station apareceu em minha casa. Comecei a perceber que, às vezes, deitada na cama, estava com preguiça de pegar meu smartphone para ler as notícias e, então, pedi a Alice para contar como o mundo havia mudado enquanto eu estava dormindo. Desde os primeiros dias, apreciei a conveniência dos assistentes de voz e esperei que milhões de desenvolvedores desenvolvessem interfaces de voz da mesma maneira que antes desenvolviam aplicativos móveis para todas as ocasiões.
Com o passar do tempo, assistentes de voz bancários inúteis apareceram no catálogo de habilidades de Alice (sem ofender os desenvolvedores). No Sberbank, por exemplo, o assistente exprimiu os termos do empréstimo e se ofereceu para ir à agência, em Tinkoff, a mesma coisa, apenas em vez da agência que ele se ofereceu para acessar o site para preencher um requerimento. Caras que desenvolveram isso, por favor, não se ofendam comigo, mas eu realmente não quero ir a lugar algum, nem para o departamento nem para o site, quero poder transferir 100 rublos para um amigo com a frase: "Alice, envie 100 rublos para Sasha".
A idéia está na superfície, mas por algum motivo, ninguém a implementou ainda. Por quê? Talvez ninguém use assistentes de voz? Talvez haja restrições legais? Existem problemas de segurança? Algo mais? Por favor, compartilhe nos comentários, se você souber.
Em algum momento, acabei de sair da cama e comecei a fazer uma habilidade particular para Alice controlar a minha conta da corretora. Passei por meus corretores e decidi pela Tinkoff Investments OpenAPI. Depois, ele estudou as capacidades da plataforma Yandex.Dialogi por um mês e, depois de um tempo, comprou os primeiros títulos por meio de um assistente de voz na Bolsa de Valores de Moscou - um lote do VTB Bank. Espero que esse acordo entre na história.
Desde o início, decidi não ocultar o código-fonte para que qualquer pessoa que queira criar um assistente de voz para si: https://github.com/denismosolov/oliver
Pegue uma torta da prateleira e, finalmente, conte-nos sobre os problemas
Existem muitas empresas, mas estou sozinha
Quando digo a Alice: "Compre uma ação Yandex", a plataforma Yandex.Dialogi extrai o nome da segurança da frase e a converte em um identificador especial FIGI (Identificador Global de Instrumentos Financeiros), necessário para interagir com a plataforma de negociação via OpenAPI. É assim que a FIGI procura as ações Yandex negociadas na Bolsa de Moscou: BBG006L8G4H1.
A conversão para FIGI ocorre apenas para os nomes de empresas que descrevi na seção Entidades nos diálogos. Você pode ler mais sobre isso na documentação . Por exemplo, aqui está um trecho de código de entidade:
entity EFigi:
values:
BBG005DXJS36:
%exact
TCS
%lemma
()?
()?
()?
()?
Este trabalho tem muito trabalho, é necessário descrever todas as empresas que negociam nas bolsas de Moscou e São Petersburgo, mas o resultado pode ser útil para traders, investidores, desenvolvedores de assistentes de voz e até empresas cujas ações são negociadas em bolsas. Aqui está um arquivo que descreve a entidade EFigi no GitHub , que estou adicionando lentamente a ela.
As pessoas chamam as mesmas empresas de maneira diferente, por exemplo, alguém dirá "Sberbank" e alguém "Sberbank". As ações ordinárias do Sberbank e as preferenciais (prefs) são negociadas na bolsa de valores. Eu gostaria de considerar todas as opções populares.
A empresa é negociada em duas bolsas em moedas diferentes
Os Recibos de Depositários Globais do Grupo TCS podem ser comprados na Bolsa de Moscou por rublos ou na Bolsa de São Petersburgo por dólares. Sobre o bem, o assistente de voz deve especificar em qual moeda comprar recibos, mas às vezes isso pode ser entendido a partir do contexto.
Por exemplo, quando digo: "Venda uma ação do Grupo TCS" e tenho apenas ações em rublos na minha conta, preciso vendê-las em rublos na Bolsa de Moscou sem qualquer esclarecimento. Se eu tiver ações do Grupo TCS em rublos e dólares em minha conta, Alice deverá fazer uma pergunta esclarecedora: "Você tem recibos de depositários globais do Grupo TCS em rublos e dólares, em que moeda você deseja vender?"
Ainda não o implementei e o TCS Group é sempre comprado e vendido por dólares. Mas, espero, em breve começarei a fazer pedidos para a compra e venda de valores mobiliários a um determinado preço (pedidos limitados), e já ensinarei o assistente de voz a distribuir ações em diferentes trocas pela moeda que estará no preço de compra ou venda.
Erros de reconhecimento
As pessoas perguntam: o que acontecerá se Alice reconhecer algo errado, por exemplo, compra o jornal errado ou a quantia errada? Para isso, forneci a confirmação de transações. Depois que Alice reconhece um comando de compra ou venda, ela fala os detalhes do acordo e aguarda confirmação. Se a confirmação não se seguir, a transação não ocorrerá.
A mensagem ao confirmar o acordo é a seguinte: “Faça o pedido para <comprar | venda> <$ value_name_name> a <$ price_to_one_paper>, ticker: <$ ticker>, número de compartilhamentos: <$ Quantity>, para confirmação, confirmação e cancelamento, diga não. "
Essa confirmação é perfeitamente audível, mas há uma falha. Alice lê mal o nome do relógio, por exemplo, YNCX, soa como "yinks".
Eu queria escrever uma função que analisasse os tickers por letra e, para cada letra, tocava um som do som do alfabeto inglês. O código pegaria uma string YNDX como entrada e retornaria uma string como esta no formato tts:
<speaker audio="sounds-y.opus"><speaker audio="sounds-n.opus"><speaker audio="sounds-d.opus"><speaker audio="sounds-x.opus">
Alice tocará sons e, em teoria, tudo parecerá bom.
Segurança ao fazer transações
Para usar o OpenAPI, você deve desativar a confirmação de transações SMS no Tinkoff Investments, e isso cria riscos à segurança. Por exemplo, um investidor foi passear com um cachorro e as crianças decidiram brincar com Alice e venderam todas as ações.
A primeira coisa que vem à mente é usar uma palavra-código para confirmar transações, mas as crianças podem facilmente escutar e se lembrar dela. E as outras opções que vieram à minha mente exigirão muito esforço dos desenvolvedores de assistentes de voz. O mais legal é a identificação de uma pessoa por voz, ou seja, certifique-se de que apenas o proprietário da conta possa concluir a transação e Alice educadamente recusaria a qualquer outra pessoa. A julgar pelo fato de Alice saber memorizar as pessoas por voz , o trabalho nessa direção está em andamento. Mas não parece tão fácil de fazer.
Outra opção que vem à mente é a confirmação de transações por uma impressão digital, como nos smartphones, mas para isso um leitor de impressão digital deve ser incorporado ao alto-falante inteligente, mas isso provavelmente não será muito prático e provavelmente aumentará o custo alto-falante inteligente.
Se você sabe como confirmar transações em aplicativos semelhantes no exterior ou apenas deseja compartilhar uma ideia, escreva nos comentários.
Em vez de uma conclusão
Como um ex-colega diz: "Tudo ficará bem, mas um pouco mais tarde". Acredito que bancos e corretores implementarão tudo isso mais cedo ou mais tarde, mas, por enquanto, continuam sendo muitos entusiastas e fabricantes como eu.
Vejo você no futuro!