在本系列前面的教程中,您为一个名为Requester X-ray的应用程序设计了用户界面。在本教程中,您将获得关于请求者的信息,并将其显示在UI中。

应用程序将从Zendesk REST API获取请求者信息。亚博它会向<一个href="https://developer.zendesk.com/api-reference/ticketing/users/users/">显示用户端点:

             
得到/api/v2/用户/idjson

一个端点是一个URL,可以在其中获取或设置有关资源的信息。显示用户端点包括id变量,它是Zendesk Support用亚博户ID。你的应用需要提供ID到端点,但它不知道提前。ID取决于代理在Zendesk Support中查看的票据。亚博

让我们来研究一下应用程序的逻辑。首先,应用程序应该访问代理界面中当前打开的票据,并获得请求者的用户ID。其次,应用程序应该使用ID从Show user端点请求用户信息。如果请求成功,应用程序应该在请求者模板中显示请求者的信息。如果请求失败,应用程序应该在另一个模板中显示错误消息。应用程序逻辑看起来是这样的:

本教程涵盖了构建应用程序逻辑的步骤:

  1. 调用框架API
  2. 调用REST API
  3. 显示请求者信息
  4. 日期格式
  5. 显示错误消息
  6. 代码完成!

本教程是构建Zendesk应用程序系列的一部分:亚博

调用框架API

第一步是从代理接口中的票据打开处获取请求者的ID。

它是如何工作的

Apps框架包括一个票务API,它允许您访问代理接口中打开的任何票务的票务数据。

框架的<一个href="https://developer.zendesk.com/api-reference/apps/apps-support-api/ticket_sidebar/">票对象Doc列出了您可以检索的票据属性。扫描文档中的列表,您会找到一个特别的<一个href="https://developer.zendesk.com/api-reference/apps/apps-support-api/ticket_sidebar/">ticket.requester属性,该属性返回用户描述用户的对象。深入研究<一个href="https://developer.zendesk.com/api-reference/apps/apps-support-api/all_locations/">用户对象博士,你去找<一个href="https://developer.zendesk.com/api-reference/apps/apps-support-api/all_locations/">user.id属性,它以整数形式返回用户的ID。

有了这些信息,你可以使用下面的路径来获取请求者的ID:

             
“ticket.requester.id”

在ZAF v2中,您使用client.get (_path_)方法来查询数据API。该方法不直接返回值。相反,它返回一个包含属性的对象,该属性的名称与API路径对应。例子:

             
“ticket.requester.id”29043265

name字符串包含句点,所以使用JavaScript括号来检索它的值:

             
var客户端ZAFClient初始化客户端得到“ticket.requester.id”然后函数数据控制台日志数据“ticket.requester.id”//类似29043265

iframe和父页面之间的通信是异步.换句话说,浏览器不会等待对请求的响应。它在处理请求时继续正常工作。当收到响应时,您将得到一个回调。的那就是()方法用于等待回调。方法返回一个<一个href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">承诺并且有两个参数:成功时运行的函数和失败时运行的函数。这句话的基本意思是,“提出请求,然后在知道结果后做这两件事中的一件。”

             
客户端得到“ticket.requester.id”然后run_this_fn_on_successrun_this_fn_on_failure

有关更多信息,请参见<一个href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then">Promise.protoype.then ()在Mozilla开发者网络上。

获取请求者的用户id

在上一节中,您了解到可以使用以下路径获取请求者的用户ID:

             
“ticket.requester.id”

将路径插入client.get (_path_)方法来获取答案。

获取请求者的用户id

  1. main.js文件,在自调用函数中插入以下语句:

                   
    ...客户端得到“ticket.requester.id”然后函数数据varuser_id数据“ticket.requester.id”控制台日志'请求者id是'+user_id

    该语句获取代理接口中当前打开的票据请求者的用户id。在获得成功响应后,它将其分配给一个名为user_id

  2. 通过重新加载应用程序并在浏览器控制台中查找console.log消息来检查id。

    如果ZCLI服务器尚未启动,请参见<一个href="https://developer.zendesk.com/documentation/apps/build-an-app/build-your-first-support-app/part-2-designing-the-user-interface/">测试应用程序的指令。

  3. 取代console.log ()语句,使用以下函数调用:

                   
    requestUserInfo客户端user_id

    该调用将客户端变量和id变量传递给一个名为requestUserInfo (),您将在下一节中创建它。它的任务是向Zendesk REST API中的Users API发出HTTP请求。亚博你通过客户端因为该函数需要ZAFClient对象来发出HTTP请求。

到目前为止,你的自调用函数应该如下所示:

             
函数var客户端ZAFClient初始化客户端调用“调整”宽度“100%”高度“120 px”客户端得到“ticket.requester.id”然后函数数据varuser_id数据“ticket.requester.id”requestUserInfo客户端user_id

调用REST API

现在你的应用程序可以从票据中获得请求者的ID,你可以使用它从Zendesk API中获得请求者的“x射线”用户信息。亚博

定义API请求

您可以使用<一个href="https://developer.zendesk.com/api-reference/apps/apps-core-api/client_api/">client.request ()方法向外部api发送HTTP请求。该方法接受一个对象,该对象将请求设置定义为参数。例子:

             
var设置url“https://www.example.com/api/resource.json”类型“得到”数据类型json的客户端请求设置然后函数数据控制台日志数据函数响应控制台错误响应响应结果字符串

x射线应用程序的请求设置是什么?的<一个href="https://developer.zendesk.com/api-reference/ticketing/users/users/">REST API文档为Show User端点提供所需的所有信息:

  • url' / api / v2 /用户/ {id} . json的.对于Ze亚博ndesk端点,您不需要指定完整的URL。对于其他端点,指定完整的URL,例如“https://www.example.com/api/resource.json”
  • 类型得到
  • 数据类型json

获取请求者的信息

在上一节中,您了解到可以使用以下设置向Show User端点发出HTTP请求:

             
var设置url' / api / v2 /用户/ {id} . json的类型“得到”数据类型json的

获取请求者的信息

  1. 控件中插入以下函数main.js文件:

                   
    函数requestUserInfo客户端idvar设置url' / api / v2 /用户/ '+id+. json的类型“得到”数据类型json的客户端请求设置然后函数数据控制台日志数据函数响应控制台错误响应

    如果请求成功,应用程序将数据显示在控制台中console.log(数据).如果请求不成功,应用程序将在控制台中以红色显示响应console.error(响应)

  2. 在浏览器控制台中检查请求的结果。保存文件,重新加载应用程序,并在控制台中查找console.log消息。您应该看到一个包含用户数据的对象。

  3. 通过在其中一个请求设置中引入拼写错误来测试失败的结果。保存文件,重新加载应用程序,并寻找控制台。控制台中出现错误消息。

    请记住,在您满意错误处理按预期工作后,修复请求设置中的拼写错误。

  4. 在第一个回调函数中,将console.log语句替换为对yourshowInfo ()功能:

                   
    showInfo数据
  5. 在第二个回调函数中,将console.log语句替换为对yourshowError ()功能:

                   
    showError响应

    你的requestUserInfo ()函数应该如下所示:

                   
    函数requestUserInfo客户端idvar设置url' / api / v2 /用户/ '+id+. json的类型“得到”数据类型json的客户端请求设置然后函数数据showInfo数据函数响应showError响应

显示请求者信息

在上一节中,您将用户信息传递给showInfo ()从Zendesk API获得成功响应后调用函数。亚博

在本节中,您将获取信息并将其显示在请求程序模板中。

  1. 在你的showInfo ()函数定义(不是showInfo ()函数调用),添加一个名为数据接收用户数据:

                   
    函数showInfo数据...
  2. showInfo ()函数中的硬编码值requester_data对象中的值数据论点:

                   
    varrequester_data“名字”数据用户的名字“标签”数据用户标签“created_at”数据用户created_at“last_login_at”数据用户last_login_at
  3. 保存文件,单击重新加载所有应用程序在Ze亚博ndesk Support中测试您的工作。如果ZCLI服务器尚未启动,请参见<一个href="https://developer.zendesk.com/documentation/apps/build-an-app/build-your-first-support-app/part-2-designing-the-user-interface/">测试应用程序的指令。

    注意,如果用户在他们的Zendesk配置文件中没有任何标签,Tags行就不会出现。亚博

这些日期对用户来说不是很友好。你决定花几分钟来解决这个问题。

日期格式

您可以使用标准的JavaScript Date方法来格式化日期。

  1. 将以下帮助函数添加到您的main.js文件:

                   
    函数formatDate日期varcdate日期日期var选项一年“数字”“短”一天“数字”日期cdatetoLocaleDateString“en - us”选项返回日期

    该函数根据传递给函数的日期字符串创建一个JavaScript Date对象。它使用Date格式化方法对数据进行格式化,并返回修改后的日期。

  2. 回到你的showInfo ()函数,将这两个日期传递给helper函数:

                   
    “created_at”formatDate数据用户created_at“last_login_at”formatDate数据用户last_login_at
  3. 保存main.js文件并单击重新加载所有应用程序在Ze亚博ndesk Support中测试您的工作。

    约会应该比以前更友好。

显示错误消息

在<一个href="#calling-the-rest-api">调用REST API方法传递了一个响应对象showError ()函数从Zendesk API得到错误响应后:亚博

             
showError响应

在本节中,您将获取信息并将其显示在错误模板中。

  1. 添加一个参数到你的showError ()接收错误数据的函数定义:

                   
    函数showError响应...
  2. showError ()函数中的硬编码值error_data对象中的值响应对象:

                   
    varerror_data“状态”响应状态“statusText”响应statusText
  3. 中的请求设置中的一个输入错误,从而测试错误页面requestUserInfo ().保存文件并重新加载应用程序。应该会显示错误模板。

    记住,在您满意错误模板按预期工作之后,要修复请求设置中的错字。

代码完成!

恭喜你!你开发了你的第一个ZAF应用程序。你的最终版本main.js文件应该是这样的:

             
函数var客户端ZAFClient初始化客户端调用“调整”宽度“100%”高度“120 px”客户端得到“ticket.requester.id”然后函数数据varuser_id数据“ticket.requester.id”requestUserInfo客户端user_id函数requestUserInfo客户端idvar设置url' / api / v2 /用户/ '+id+. json的类型“得到”数据类型json的客户端请求设置然后函数数据showInfo数据函数响应showError响应函数showInfo数据varrequester_data“名字”数据用户的名字“标签”数据用户标签“created_at”formatDate数据用户created_at“last_login_at”formatDate数据用户last_login_atvar文档getElementById“requester-template”innerHTMLvar模板车把编译var超文本标记语言模板requester_data文档getElementById“内容”innerHTML超文本标记语言函数showError响应varerror_data“状态”响应状态“statusText”响应statusTextvar文档getElementById“错误模板”innerHTMLvar模板车把编译var超文本标记语言模板error_data文档getElementById“内容”innerHTML超文本标记语言函数formatDate日期varcdate日期日期var选项一年“数字”“短”一天“数字”日期cdatetoLocaleDateString“en - us”选项返回日期

你的iframe.html文件应该是这样的:

             
<!文档类型超文本标记语言><超文本标记语言><><字符集utf - 8><链接rel样式表hrefhttps://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.csscrossorigin匿名><链接hrefmain.cssrel样式表>><身体><divid内容>div><页脚><一个hrefhttps://mysite.github.io/support目标平等自愿>报告错误一个>页脚><脚本idrequester-template类型文本/ x-handlebars-template><表格><tr><道明>客户</道明><道明“数据”>的名字</道明></tr>如果标签<tr><道明>标签</道明><道明“数据”>#每一个标签/每一个</道明></tr>/如果<tr><道明>添加</道明><道明“数据”>created_at</道明></tr><tr><道明>最后的签署</道明><道明“数据”>last_login_at</道明></tr></表格>脚本><脚本id错误模板类型文本/ x-handlebars-template><p>状态-statusText错误在下面的链接报告一个错误</p>脚本><脚本srchttps://static.zdassets.com/亚博zendesk_app_framework_sdk/2.0/zaf_sdk.min.js>脚本><脚本srchttps://cdn.jsdelivr.net/npm/<一个href="https://developer.zendesk.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="167e7778727a7374776465562238253825">(电子邮件保护)/dist / handlebars.min.js>脚本><脚本srcmain.js>脚本>身体>超文本标记语言>

如果你喜欢,继续调整应用程序。你可以通过点击下载完整的应用程序源代码<一个href="https://zen-marketing-documentation.s3.amazonaws.com/docs/en/xr_app.zip">xr_app.zip

最后一步是在Zendesk Support实例中验证、打包和安装应用程序。亚博继续<一个href="https://developer.zendesk.com/documentation/apps/build-an-app/build-your-first-support-app/part-5-installing-the-app-in-zendesk-support/">第5部分-在Zendesk Support中安装应用程序亚博

<页脚类="footer__Container-sc-1o148d7-0 gCnFo"> <一个href="https://support.zendesk.com/hc/en-us/community/topics" target="_blank" rel="noreferrer noopener" class="footer__LinkWithIcon-sc-1o148d7-4 gMsdeb"> 论坛<一个href="https://developerblog.zendesk.com" target="_blank" rel="noreferrer noopener" class="footer__LinkWithIcon-sc-1o148d7-4 gMsdeb"> 博客<一个href="https://docs.google.com/forms/d/e/1FAIpQLScm_rDLWwzWnq6PpYWFOR_PwMaSBcaFft-1pYornQtBGAaiJA/viewform" target="_blank" rel="noreferrer noopener" class="footer__LinkWithIcon-sc-1o148d7-4 gMsdeb"> 松弛 亚博加利福尼亚州旧金山市市场街989号,邮编:94103
隐私政策<一个href="//www.ying8.net/company/agreements-and-terms/master-subscription-agreement/" target="_blank" rel="noreferrer noopener">条款和条件<一个href="https://status.zendesk.com" target="_blank" rel="noreferrer noopener">系统状态<一个href="#onetrust-show-cookie-settings" class="ot-sdk-show-settings" id="onetrust-show-cookie-settings">Cookie设置