对Web Widget和移动SDK的消息传递中的最终用户进行身份验证

回到顶端

90条评论

  • 托马斯Verschoren
    社区的主持人

    开发人员文档链接到https://developer.亚博zendesk.com/documentation/zendesk-web-widget-sdks/sdks/web/sdk_api_reference/#authentication目前还不存在。

    我们如何使用Javascript对象来启用JWT调用?

    泽(“信使”,…);

    0
  • 米克·奥唐纳
    亚博Zendesk产品经理

    你好,托马斯!为延迟道歉,开发人员文档现已更新。

    1
  • 托马斯Verschoren
    社区的主持人

    太棒了,谢谢!

    0
  • 亚历克斯

    嗨,团队,

    看起来我们已经成功地实现了消息传递的身份验证,因为最终用户没有被提示提供他们的姓名和电子邮件地址。
    但是在用户配置文件中,email字段仍然是空的。

    下面是我们用来生成令牌的代码:

    进口jwt秘密  = "******************************************************************************" 令牌= jwt。编码({“external_id”:“123456 aa”、“电子邮件”:“some.com”、“ext”:“1674836085”、“名称”:“乔恩·沃森1985年”,“范围”:“用户”},秘密,算法=“HS256”,标题={“alg”:“HS256”,“typ”:“JWT”、“孩子”:“app_61f2c451a3844800edf1e7d3”})打印 ("------") 打印(令牌)打印 ("------") print (jwt.decode(令牌,秘密,算法= [" HS256 "]))打印 ("------")

    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImtpZCI6ImFwcF82MWYyYzQ1MWEzODQ0ODAwZWRmMWU3ZDMifQ.eyJleHRlcm5hbF9pZCI6IjEyMzQ1NmFhIiwiZW1haWwiOiJzb21lQGVtYWlsLmNvbSIsImV4dCI6IjE2NzQ4MzYwODUiLCJuYW1lIjoiSm9uIFdhdHNvbiAxOTg1Iiwic2NvcGUiOiJ1c2VyIn0.RcOsjkbcil5YcmBnZpzsC3do0Q7nYY9-S_P_d-8rJ5Y

    谢谢你!

    1
  • 亚历克斯

    此外,用户id不会显示在自定义票证字段中。

    0
  • 米克·奥唐纳
    亚博Zendesk产品经理

    亚历克斯,这是目前产品的局限性。我们正在改进Agent Workspace,以便在不久的将来添加这些信息。

    1
  • 凯文Konings

    你好!

    我们一直在等待这个功能,因为我们打算用它来链接Zendesk Messaging用户到我们应用程序中的用户,这样我们就可以通过Zendesk亚博应用程序或类似的方式向我们的团队显示额外的信息。对于这个链接,我们尝试使用外部ID,这将是我们的应用程序用户ID。

    然而,到目前为止,我们还没有能够做到这一点:

    • 当一个用户创建了他们的第一个票据,并且以前没有在Zendesk中存在过,似乎没有办法通过API访问他们的外部ID(据我所知,亚博当我为新创建的Zendesk Messaging用户调用/ API /v2/users/{ZENDESK_USER_ID}时,在我们的测试中,字段external_id总是空的)。电子邮件地址也是空的,尽管它是作为JWT的一部分提交的。
    • 当我们在他们第一次使用Zendesk Messaging之前创建一个用户,并通过API在我们的应用程序中注册时,设置亚博external_id和他们的电子邮件,然后使用JWT中相同的值作为外部ID和电子邮件地址对用户进行身份验证时,将创建一个全新的用户,而不是Zendesk将该用户作为我们之前创建的用户进行身份验证。

    尤其是后一种行为似乎超越了限制——Zendesk似乎创建了两个使用相同电子邮件地址的用户。亚博这似乎不是我们工作流程的专属问题,而是创建用户,例如,在使用该电子邮件地址之前已提交门票。

    我的问题是:

    • external_id是否可以通过API访问,或者我们是否可以事先使用特定的外部ID创建用户?如果没有,这在你的路线图上吗?
    • 这种行为是关于使用相同的电子邮件地址创建多个用户的意图,还是当前限制的一部分?如果是这样,建议采用什么方法来处理这个问题?
    11
  • 豪尔赫·派斯·

    嗨,团队,是否有一个估计的时间框架来发布限制文章访问消息的认证用户?

    • 限制指南文章。需要身份验证的指南文章最初将无法提供给用户,即使它们已经过身份验证。我们将对消息传递产品进行进一步改进,使用户能够查看需要用户身份验证的指南文章。不需要用户身份验证的项目不受影响。
    2
  • Clayful

    凯文Konings想知道你的第二个观点有没有得到回应?

    我们遇到了同样的问题,如果我们不能将用户附加到现有用户并相应地映射他们的历史记录,就会破坏对用户进行身份验证的目的。这是已知的限制还是bug?

    1
  • 凯文Konings

    Clayful几天前我给支持发了消息,他们告诉我他们会回来找我的。

    我100%同意你的观点,如果它不是作为我们的代理在以前的票中已经交互过的同一个用户进行身份验证,这就不是真正的身份验证。

    1
  • 圣地亚哥Gandolfo
    社区的主持人

    凯文Konings你有什么消息吗?

    0
  • 马特哈勒尔

    再加上Ken Millar提出的这个缺点,如果我们的代理无法看到最终用户的电子邮件地址,这将严重影响他们在我们的内部员工仪表板上进行有效的故障排除以跟踪用户信息。

    这些增强的时间表将是非常感谢ZD团队。谢谢!

    3.
  • Jen科尔

    我们还没有实现这个。当你说它不能提供机票上客户的电子邮件地址时,它能提供什么信息呢?或者用户信息是空白的?如果有人愿意分享,我很想看到整张票的截图。是否有一种方法可以合并用户或将客户的用户信息添加到该票据?只是好奇在Zendesk修复这个限制之前,你们都在使用什么作为工作?亚博你的评论让我犹豫是否要实现这个功能,尽管我们一直期待着它。谢谢你的帮助!

    4
  • Clayful

    嗨,珍,

    坦率地说,这是一团糟

    我们使用SFDC ID作为外部字段,由于某种原因最终被填充为Web用户ID(但没有被识别为外部ID或绑定到现有用户)-下面的截图。

    这是一个好消息,因为至少我们可以通过搜索这个ID将用户与现有用户合并——所以它实际上只在用户第一次聊天时影响代理。对于合并后的后续聊天,现在弹出的是原始用户。太好了。

    问题是现在机器人的行为是非常不稳定的!你不清楚聊天机器人什么时候开始聊天,什么时候不开始聊天,也不清楚你在上班时间或不在上班时间会收到什么信息。如果你在一个新窗口中打开聊天或刷新,一些错误就会得到解决——当然,这对我们的用户来说不是一个很好的外观。这是我们现在最大的问题,因为上面的邮件问题可以被“黑掉”并在内部处理,而这对我们的最终用户来说只是一个可怕的体验……

    我也在等待支持团队的回复,所以我一收到回复就会在这里发表评论!

    3.
  • 凯文Konings

    Jen科尔

    当我们两周前尝试实现这个特性时,创建用户时只使用通过JWT提交的名称。我们提交的电子邮件地址和外部ID在代理界面和User API中都不可见。下面是它的截图(基本上只填了名字):

    我们的计划是当用户在我们的应用程序中注册时填写用户信息,然后通过他们的外部ID或电子邮件地址在Zendesk Messaging中对这些用户进行身份验证。亚博但是,这里创建的用户已经有一个终端用户,其电子邮件地址和外部ID与用于身份验证的用户相同,Messaging仍然创建了一个新用户。

    我还没有从Zendesk那里得到关于我上面问题的反馈,希望这个亚博消息传递行为不是有意的,因为它的方式让这个功能对我们来说几乎毫无用处。

    3.
  • Tim O’mahony

    我们看到的和凯文Konings这阻碍了我们向信息传递的转变。如果没有修复,我们可能会在这里使用chat。

    我们看到的第二个问题是,即使使用已创建的用户,最终也会创建另一个重复的用户。

    3.
  • Jen科尔

    谢谢你!肯•米勒玛丽亚Barrera)!这很有帮助。看起来我们需要等待,当电子邮件地址/用户信息可以被验证,然后带到创建的票实现这一点。

    Mick O ' donnell当该功能更新时,我们会收到通知吗?用户信息/电子邮件地址被带入票务创建?

    我们在营业时间内外通过消息传递渠道接收门票。如果票证是以一个网络用户的身份发出的,可能是一个用户的名字,但没有电子邮件地址,那么如果没有电子邮件地址,就很难追踪到正确的用户(对于那些在营业时间以外进入的票证)。电子邮件地址是我们客户的唯一标识符,需要将所有用户数据链接在一起。我们非常渴望这个功能的更新,所以我们可以实现它。谢谢!

    1
  • Ovidiu Varo

    你好,

    我们在身份验证方面也遇到了类似的问题。我们用的是loginUser (jwt)在successCallback上保存和检索的唯一数据是external_id

    请注意jwt还包含名字和一个电子邮件

    1
  • Prakruti Hindia
    亚博Zendesk产品经理

    感谢大家的来信和反馈。我们希望为未来的改进提供更多的可见性。

    我们的计划是将external_id和name作为用户配置文件的一部分。它们对于识别你的客户至关重要。计划在第二季度初推出。显示电子邮件将紧随其后。

    在短期内,我们将在对话中显示external_id。这将在几周内推出。

    我们将在发布说明中发布更新,一旦它推出,就会在这个线程上发布更新。

    ——Prakruti

    2
  • 凯文Konings

    Prakruti Hindia

    谢谢你的反馈!

    我和其他人面临的使用相同的电子邮件创建重复用户的问题怎么办?这是现在的一个bug,还是会成为第二季度早期改进的一部分?

    最好的

    1
  • 快闪咖啡营销团队

    你好Prakruti Hindia

    我想问一个问题。当我们生成JWT令牌并在代理工作区上可见时,是否有可能在有效负载上放置标记?
    如果不可能的话。你有任何解决方法如何通过Zendesk Messaging (Flow Builder)在Agent Workspace上发送标签吗?亚博因此,我们不需要从票券字段手动输入所需的值

    谢谢你!

    0
  • Prakruti Hindia
    亚博Zendesk产品经理

    我和其他人面临的使用相同的电子邮件创建重复用户的问题怎么办?这是现在的一个bug,还是会成为第二季度早期改进的一部分?

    如果系统中已经存在具有相同外部id的用户,我们将合并用户。这将是第二季度早期改进的一部分。

    我还要求其他产品经理回答有关标签和过期的问题。他们很快就会回复。

    ——Prakruti

    0
  • Prakruti Hindia
    亚博Zendesk产品经理

    重要更新:我们已经推出了一个小的修复,将表面外部id当代理悬停在身份验证徽章。

    我们将继续关注将external_id与User配置文件关联起来。

    2
  • 托马斯Verschoren
    社区的主持人

    那很好啊!

    0
  • 米克·奥唐纳
    亚博Zendesk产品经理

    嗨约书亚!

    对于这个问题的回答是:“如果我们没有在JWT有效负载中传递' exp ',会有一个过期吗?”如果有,有效期是多长?”,如果在JWT中没有提供,则不会设置有效期。因此,您需要考虑对安全策略有意义的值。

    0
  • 米克·奥唐纳
    亚博Zendesk产品经理

    嗨,快闪咖啡!

    目前还不可能在JWT有效负载中插入额外的索赔,并在系统的其他部分使用此数据,但我们目前正在探索允许客户实现这一点的选项。JWT本身可能对客户端上下文数据有用,但这可能只是解决方案的一部分。今天,您需要手动输入需要的值,抱歉。

    0
  • 安倍

    嗨,Z亚博endesk团队,

    在JWT头中使用“kid”属性的正确值是什么?是App ID, Client ID,还是这些都不是?

    谢谢——

    安倍

    编辑:我在这里有一个问题的答案:https://support.亚博zendesk.com/hc/en-us/community/posts/4421945067546-Having-issue-when-trying-to-authenticate-/comments/4446353121434#community_comment_4446353121434

    0
  • 圣地亚哥Gandolfo
    社区的主持人

    嗨,印度人民,

    您提到的新修复是否使得当用户从小部件发送消息并且他们的external_id在JWT中设置时,如果已经存在具有相同external_id的用户,那么它不会创建一个新用户,而是将该票证分配给该“旧”用户?

    欢呼,

    圣地亚哥

    3.
  • 贾斯汀DoCanto

    使用此实现身份验证时遇到问题。

    首先,我嵌入了脚本(用SECRETKEY替换了实际的键)

    接下来,我生成了带有用户范围、external_id等的JWT,并使用JWT.io验证了有效负载和加密类型。没问题。

    然而,现在我看到它,无论我是否试图验证用户,我都会得到这个错误。无论如何,小工具加载,但我得到这个。

    错误:方法webWidget:on。Open不存在。

    查看Developer API文档以确保你正确地实现了它,https://developer.亚博zendesk.com/embeddables/docs/zendesk-sdk-for-web/getting_started

    尽管有这个错误,小部件仍然加载,只是没有任何身份验证工作的迹象。因此,我不知道这是阻止JWT授权工作的原因还是其他原因。

    还有,这是我找到的验证代码。我创建了一个与回调相匹配的函数来传递JWT令牌。

    ('messenger', 'loginUser', function (callback) {)回调(“new-jwt-for-user”);});
    感觉好像我遗漏了什么,或者使用了错误的小部件和身份验证组合?由于关于用户身份验证的帮助台信息在10多篇文章中难以置信地分割,没有一体化的代码示例,您是否想要一些见解或更好的示例
    3.
  • Ovidiu Varo

    你好,

    我们在一些三星设备上看到了另一个问题。

    我们集成了Zendesk S亚博DK(新的),并使用了SDK中的多个功能:initialize, loginUser, logoutUser, unreadMessageCount和unreadMessageCountChanged的ZendeskEventListener。

    所以,基本上我们在一些安卓(三星)设备上打开聊天时看到的是一个白屏。清除缓存可以修复此问题,但当注销并再次登录时,问题仍然存在。

    我们如何解决这个问题?

    问候,

    Ovidiu

    0

登录留下评论。

由Zendesk提供支亚博持