莫斯科交易所业务语音助理:“爱丽丝,购买Yandex股票”

-爱丽丝,买一股Yandex。

-以市场价格购买Yandex的申请,股票代码:YNDX,股份数量:1,说“确认”以确认,说“否”以取消。

- 我确定。

-应用程序已执行。





我正在制作一个开源语音界面,用于在莫斯科交易所进行证券交易。我从小就想到这个主意。我记得大约20年前第一次在电影中看到语音助手,当时我什至没有家里的有线电话。现在,我可以通过智能手机管理无限的Internet连接,经纪帐户。二十多年来,技术变得越来越负担得起。



一切如何开始



一年半以前,Yandex.Station出现在我家中。我开始发现有时候,我躺在床上懒得伸手去拿智能手机看新闻,然后我问爱丽丝,我睡觉时世界发生了怎样的变化。从开始的第一天起,我就很欣赏语音助手的便利,并且我期望数以百万计的开发人员会在所有场合都以攻击移动应用程序的相同方式攻击语音接口。



随着时间的流逝,无用的银行语音助手出现在Alice的技能目录中(对开发人员没有冒犯)。例如,对于Sberbank银行,助理宣布了贷款条件,并提出要前往分行,Tinkoff有同样的事情,只是他建议去现场填写申请表的分行而不是他建议的分行。提出这个建议的人请不要对我发脾气,但是,实际上,我不想到任何地方,无论是去部门还是网站,我都希望能够将100卢布转给一个朋友,上面写着:“爱丽丝,给萨沙寄100卢布。”



这个想法是表面的,但是由于某种原因,还没有人实现它。为什么?也许没有人使用语音助手?也许有法律限制?也许有安全问题?还有吗如果您知道,请分享评论。



在某个时候,我刚起床,开始为Alice做私人技能来语音控制我的经纪帐户。我经过经纪人,并选择了Tinkoff Investments OpenAPI。然后一个月,我投入精力探索Yandex.Dialogs平台的功能,过了一段时间,我通过莫斯科交易所的语音助手-一家VTB银行购买了第一批证券。我希望这笔交易将成为历史。



从一开始,我就决定不隐藏源代码,以便任何想要的人都可以自己设置语音助手:https : //github.com/denismosolov/oliver



从架子上拿一个馅饼,最后讲一下问题所在。



有很多公司,我一个人



当我对爱丽丝说:“购买一股Yandex”时,Yandex.Dialogs平台会从短语中提取证券名称,并将其转换为通过OpenAPI与交易平台进行交互所需的特殊FIGI(金融工具全局标识符)标识符。这就是FIGI寻找在莫斯科交易所交易的Yandex股份的方式:BBG006L8G4H1。



仅在我在“ 对话中的实体部分中描述的公司名称才会发生FIGI的转换在文档中阅读有关此内容的更多信息。例如,以下是实体代码片段:



entity EFigi:
    values:
        BBG005DXJS36:
            %exact
            TCS
            %lemma
            ()?
            ()?
            ()?
               ()?


这项工作非常费力,您需要描述在莫斯科和圣彼得堡证券交易所交易的所有公司,但结果对交易者,投资者,语音助手的开发人员甚至是股票在证券交易所交易的公司都可能有用。这是一个描述GitHub上EFigi本质的文件,我正在逐步添加它。



人们对同一家公司的称呼不同,例如,有人会说“ Sberbank”,而有人会说“ Sberbank”。Sberbank普通股和优先股在股票交易所交易。我想考虑所有流行的选择。



该公司在两个交易所使用不同货币交易



TCS集团的全球存托凭证可以在莫斯科交易所的卢布购买,也可以在圣彼得堡的美元购买。语音助手应该以一种很好的方式阐明购买收据所用的货币,但是有时可以从上下文中了解这一点。



例如,当我说“出售TCS Group的一股股份”时,我的账户中只有卢布的份额,那么我需要在莫斯科交易所上以卢布的价格出售它们,而无需任何澄清。如果我的帐户中拥有TCS Group的卢布和美元股票,那么爱丽丝应该提出一个澄清的问题:“您是否拥有TCS Group的卢布和美元全球存托凭证,您想以哪种货币出售?”



我还没有实现它,所以TCS Group总是以美元交易。但是,我希望,我很快将开始以给定的价格(限价订单)下达购买和出售证券的订单,并且在那里我已经教过语音助手通过将以购买或出售价格中的货币在不同的交易所分配股票。



识别错误



人们问,如果爱丽丝(Alice)识别出错误,例如购买错误的纸张或错误的金额,会发生什么?为此,我提供了交易确认。爱丽丝识别出买入或卖出命令后,她说出交易细节并等待确认。如果没有确认,则交易将不会进行。



确认交易时的消息是:“申请<购买|出售> <$ value_name_name>的价格为<$ price_to_one_paper>,代码:<$ ticker>,股份数量:<$数量>,用于确认,确认,取消,说不。”



这个确认是完全可以听到的,但是有一个缺陷。爱丽丝(Alice)不太清楚股票行情的名称,例如YNCX,听起来像是个yinx。



我想编写一个可以按字母解析行情自动收录器的函数,对于每个字母,我都会从英语字母的声音中播放声音。该代码将以YNDX字符串作为输入,并以tts格式返回这样的字符串:



<speaker audio="sounds-y.opus"><speaker audio="sounds-n.opus"><speaker audio="sounds-d.opus"><speaker audio="sounds-x.opus">


爱丽丝会演奏声音,理论上讲一切都会很好。



交易时的安全性





要使用OpenAPI,您必须在Tinkoff Investments中禁用对SMS交易的确认,这会带来安全风险。例如,一个投资者带狗散步,孩子们决定和爱丽丝一起玩,并卖掉了所有股份。



首先想到的是使用一个代码字来确认交易,但是孩子们可以很容易地窃听并记住它。我想到的其他选择将需要语音助手开发人员的大量努力。最酷的事情是通过语音识别一个人,即这样,只有帐户所有者才能进行交易,而爱丽丝会礼貌地拒绝任何其他人。从爱丽丝知道如何通过声音记住人们的事实来看,朝着这个方向努力。但这似乎并不容易。



想到的另一种选择是确认指纹交易,例如在智能手机上,但是为此,应该在智能列中内置指纹识别设备,但这可能不太实用,并且可能会增加成本。智能扬声器。



如果您知道如何在国外的类似应用程序中确认交易,或者只是想分享一个想法,请在评论中写下。



而不是结论



正如一位前同事所说:“一切都会好起来的,但要过一会儿。” 我相信银行和经纪人迟早会意识到这一切,但就目前而言,仍然像我一样吸引着许多发烧友和制造商。



以后见!



All Articles