【问题标题】:In the MS Bot Framework, Is there a way to prompt for sensitive info, such as username/passwords, cc numbers etc?在 MS Bot 框架中,有没有办法提示输入敏感信息,例如用户名/密码、抄送号码等?
【发布时间】:2018-04-12 04:32:36
【问题描述】:

正如问题所述,我希望用户能够向 Bot 输入一些内容,例如用户名/密码,并确保数据已加密,并且还能够对其进行解密(立即仅使用)使用内置的 Bot 框架加密/解密方法,其中密钥对我(程序员)隐藏。基本上我可以做类似的事情:

字符串结果 = 等待活动; stringsensitiveInfo = Dialog.Decrypt(result.text);

有什么方法可以告诉对话框或上下文加密活动吗?

这样,如果有活动记录器记录聊天,敏感的聊天信息不会以纯文本形式存储。

【问题讨论】:

  • 您的意思是希望从通道客户端发送的数据被加密,并且可以在机器人应用程序对话框中解密数据?
  • 一般情况下,我会提供一个指向用户可以提交信息的网页的链接。成功后,我会在机器人上向用户发送一条主动消息,例如 恭喜,注册完成(有时也会触发消息通知),表明操作已完成,用户现在应该继续使用机器人。也在网页上给出相同的信息。请注意,没有频道支持屏蔽文本,因此如果您从频道本身的用户那里获取密码,它将在聊天记录中可见。
  • @Fei 我不想加密所有数据。我的主要问题是我有一个 IActivityLogger 以纯文本形式将所有聊天记录到数据库中。我试图以某种方式向活动记录器指示不要记录某些消息。我希望在 PromptDialog 之类的东西中有某种方法可以告诉它加密用户输入。我尝试的另一条路线是在context.PrivateConversationData.SetValue<bool>("doNotLog", true); 中设置一个标志,但我似乎无法弄清楚如何从 IActivity 对象中检索该值

标签: botframework bots


【解决方案1】:

bot 框架中没有内置功能可以进行加密/解密,您必须自己编写该部分。

至于是否标记消息以进行记录,您可能最好使用channelData 而不是状态数据包之一这是因为通道数据与状态数据无关,而仅与活动相关联。

在您的评论中,您说“但我似乎无法弄清楚如何从 IActivity 对象中检索该值”好吧,您不能直接从活动对象本身中检索。如果您在控制器或对话框以外的其他东西中(例如您对IActivityLogger 的实现),您最终将不得不做类似my answer to this question 中的内容。但是,当您将数据保存在 channelData 中时,可以从 Activity/IActivity 对象(如 activity.ChannelData...)直接访问它。 Channel Data 是一个 (JSON) 对象,可用于存储所需的任何数据,也可用于将特定于通道的数据发送到通道以使用该通道的自定义功能。

【讨论】:

  • 是的,我知道这可能适用于传出消息,即从机器人发送给用户的消息。但是我将如何更改用户发送给机器人的 Activity 的 ChannelData?
  • 您只能通过 directLine 或 webchat 之类的方式来做到这一点,您可以在其中自定义前端(频道)以执行您需要的操作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-30
  • 2012-05-11
相关资源
最近更新 更多