{"id":27067,"date":"2021-03-17T06:40:04","date_gmt":"2021-03-17T06:40:04","guid":{"rendered":"https:\/\/developer.kore.ai\/v9-2\/?p=27067"},"modified":"2021-03-17T06:40:04","modified_gmt":"2021-03-17T06:40:04","slug":"alert-task-message-definition","status":"publish","type":"post","link":"https:\/\/developer.kore.ai\/v9-2\/docs\/bots\/bot-builder-tool\/alert\/alert-task-message-definition\/","title":{"rendered":"Alert Task \u2013 Message Definition"},"content":{"rendered":"<section class=\"l-section wpb_row height_auto\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<p>For some Alert tasks,\u00a0<a href=\"\/docs\/bots\/bot-builder-tool\/alert\/notification-tasks\/#Bot_Response\" target=\"_blank\" rel=\"noopener noreferrer\">as seen here<\/a>, you can define the look and feel of the data presented to the end-user when the alert is displayed based on the payload delivered by the webhook.<\/p>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h4>Defining the Message Definition<\/h4>\n<p>You can define two kinds of bot responses for a task:<\/p>\n<ul>\n<li><strong>The default for all channels:<\/strong>\u00a0Author the default title and message response for all channels based on the payload response from the API request and any processors defined.\u00a0You can create a mixture of data from the\u00a0response object along with your\u00a0own inputs, a set of <strong>Variable Keys<\/strong> derived from the Kore.ai system, custom variables, and the response sample.\u00a0The message is displayed as a message, usually as a well-formed HTML message that contains one or more variables, such as the ID number or subject, from the request object data.<\/li>\n<li><strong>Channel-specific response:<\/strong>\u00a0You can also customize a Bot response message for specific channels, for example, Facebook Messenger, Skype, SMS, or Web\/Mobile SDK, along with applying predefined message templates (tables, lists, graphs, etc.) for selected channels.<\/li>\n<\/ul>\n<h5>Message Definition Editor Features<\/h5>\n<p>To open the editor for your Action task, go to <strong>Bot Response &gt;<\/strong>\u00a0<b>Message Definition<\/b>. The Message Definition editor uses three tabs to offer the following features:<\/p>\n<ul>\n<li><strong>Standard Text<\/strong>: Use basic editor controls and HTML markup, and variable keys to define and format the response. Enter text, and then format it using buttons for bold, italics, header styles, hyperlinks, ordered and unordered lists, and inserting lines.<br \/>\n<a ref=\"magnificPopup\" href=\"\/wp-content\/uploads\/sites\/26\/Standard-text.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14145\" src=\"\/wp-content\/uploads\/sites\/26\/Standard-text.png\" alt=\"\" width=\"1040\" height=\"464\" \/><\/a><\/li>\n<li><strong>JavaScript<\/strong>: Add custom code to handle the end-user task response message, declare variables, use variable keys, and interact with third-party applications.<\/li>\n<li><strong>Preview<\/strong>: View a sample of the rendered output message, with markup, as the bot users see it.<\/li>\n<\/ul>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h5>Adding Variable\u00a0Keys<\/h5>\n<p>Follow these steps to add variable keys:<\/p>\n<ol>\n<li>Whether you are using Standard Text or JavaScript mode, to add a variable key, place the cursor where you want to add the variable and then click <strong>Variable\u00a0Keys<\/strong>.<\/li>\n<li>In the <strong>Request\/Response Keys<\/strong> dialog, expand the type of key node that contains the variable you want to insert.<br \/>\n<a ref=\"magnificPopup\" href=\"\/wp-content\/uploads\/sites\/26\/Request-Response.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14147\" src=\"\/wp-content\/uploads\/sites\/26\/Request-Response.png\" alt=\"\" width=\"928\" height=\"329\" \/><\/a><\/li>\n<li>Select the variable that you want to add, for example, <code>response.data.id<\/code>and then click <strong>Ok<\/strong>,<\/li>\n<\/ol>\n<p><a ref=\"magnificPopup\" href=\"\/wp-content\/uploads\/sites\/26\/DIYBotResponseKeys.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9813\" src=\"\/wp-content\/uploads\/sites\/26\/DIYBotResponseKeys.png\" alt=\"Bot Response Tab Message Definition Keys\" width=\"593\" height=\"525\" \/><\/a><\/p>\n<h6>Standard Keys<\/h6>\n<p><strong>Standard Keys<\/strong> are the following Kore.ai variable placeholders for reusable data.<br \/>\n<a ref=\"magnificPopup\" href=\"\/wp-content\/uploads\/sites\/26\/Standard-keys.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14148\" src=\"\/wp-content\/uploads\/sites\/26\/Standard-keys.png\" alt=\"\" width=\"927\" height=\"414\" \/><\/a><\/p>\n<ul>\n<li><strong>_labels _<\/strong>: Returns the friendly label in place of a GUID. For example, when user data is requested from a web service API, the ID of a project or workspace returned is a GUID. You can use the\u00a0<code>_labels_<\/code> key to show the user-friendly name of the GUID to the end-user instead of the GUID. In Kore.ai, a drop-down control stores the response for the\u00a0<code>_labels_<\/code> key as, for example:\n<pre class=\"lang:default decode:true\">{\r\n    \"_labels_\": {\r\n        \"15379386734832\": \"roadlabs.com\",\r\n        \"26377329985341\": \"Test Project\",\r\n        \"workspace\": \"roadlabs.com\",\r\n        \"project\": \"Test Project\"\r\n    },\r\n    \"_fields_\": {\r\n        \"workspace\": \"15379386734832\",\r\n        \"project\": \"26377329985341\"\r\n    }\r\n}<\/pre>\n<\/li>\n<li><strong>_tenant_<\/strong> &#8211; Returns the tenant for the enterprise when defined. For example, <em>JIRA<\/em> requires a tenant for URLs, such as <span style=\"color: #0000ff;\">koreteam<\/span>, in\u00a0<span style=\"color: #0000ff;\">https:\/\/<strong>koreteam<\/strong>.atlassian.net\/browse\/BBF-3265<\/span>. You can use the <code>_tenant_<\/code> key to build a link in a task response such as:<\/li>\n<li><strong>_fields_<\/strong> &#8211; Used to return a task field input provided by the end-user that is not part of a payload response. For example, in a <em>JIRA<\/em>\u00a0task, the end-user is prompted to enter a workspace name. You can use the <code>_fields_<\/code> key to store the end-user input as:\n<pre class=\"lang:default decode:true\">_fields_[\"workspace\"]<\/pre>\n<\/li>\n<li><strong>_last_run<\/strong> &#8211; Used to return the UTC date timestamp of a web service poll using ISO 8601 format, for example,\u00a02016-03-05T12:44:38+00:00. For example, if a web service request returns all activity in a payload response, you can use the <code>_last_run<\/code> key to filter results displayed before or after the value for<code>_last_run<\/code><\/li>\n<\/ul>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h6>Session Keys<\/h6>\n<p><strong>Session Keys<\/strong>\u00a0are Kore.ai variable placeholders for user data specific to a single session instance.<br \/>\n<a ref=\"magnificPopup\" href=\"\/wp-content\/uploads\/sites\/26\/DIYBotResponseVariableSessionKeys.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10221\" src=\"\/wp-content\/uploads\/sites\/26\/DIYBotResponseVariableSessionKeys.png\" alt=\"Session Keys\" width=\"599\" height=\"444\" \/><\/a><\/p>\n<ul>\n<li><strong>UserContext.get(&#8220;_id&#8221;)<\/strong> &#8211;\u00a0The Kore.ai userId.<\/li>\n<li><strong>UserContext.get(&#8220;emailId&#8221;)<\/strong> &#8211;\u00a0The email address associated with the userId.<\/li>\n<li><strong>UserContext.get(&#8220;lastName&#8221;)<\/strong> &#8211;\u00a0The last name of the user.<\/li>\n<li><strong>UserContext.get(&#8220;firstName&#8221;)<\/strong> &#8211;\u00a0The first name of the user.<\/li>\n<li><strong>UserContext.get(&#8220;profImage&#8221;)<\/strong> &#8211;\u00a0The image or avatar filename of the user.<\/li>\n<li><strong>UserContext.get(&#8220;profColor&#8221;)<\/strong> &#8211;\u00a0The account color for the user.<\/li>\n<li><strong>UserContext.get(&#8220;activationStatus&#8221;)<\/strong> &#8211;\u00a0The account status of the user.<\/li>\n<li><strong>UserContext.get(&#8220;jTitle&#8221;)<\/strong> &#8211;\u00a0The title of the user, if defined.<\/li>\n<li><strong>UserContext.get(&#8220;orgId&#8221;)<\/strong> &#8211;\u00a0The organizational ID of the user account, if defined.<\/li>\n<li><strong>UserContext.get(&#8220;customData&#8221;)<\/strong> &#8211; A developer defined custom key.<\/li>\n<li><strong>UserContext.get(&#8220;identities&#8221;)<\/strong> &#8211; Alternate user IDs, if defined.<\/li>\n<\/ul>\n<p>Additional session keys may be available depending on how the Bot task is defined and the context of keys available for that task.\u00a0For more information about session and context keys, see <a href=\"\/docs\/bots\/bot-builder-tool\/dialog-task\/using-session-and-context-variables-in-tasks\/\">Using Session and Context Variables in Tasks<\/a>.<\/p>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h6>Response Keys<\/h6>\n<p>Response Keys are parsed directly from your <strong>Response Sample<\/strong>\u00a0text in the\u00a0<strong>API Response<\/strong>\u00a0tab. Response Keys\u00a0vary depending on the Response Sample defined.<a ref=\"magnificPopup\" href=\"\/wp-content\/uploads\/sites\/26\/DIYBotResponseVariableResponseKeys.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10222\" src=\"\/wp-content\/uploads\/sites\/26\/DIYBotResponseVariableResponseKeys.png\" alt=\"Response Keys\" width=\"593\" height=\"523\" \/><\/a><br \/>\nThe following list is an example of Response Keys available for an <em>Asana<\/em> task.<\/p>\n<pre class=\"lang:default decode:true\">request.data.workspace\r\nrequest.data.projects\r\nrequest.data.name\r\nrequest.data.notes\r\nlabels.498346170860\r\nlabels.30887755353556\r\nlabels[\"data.workspace\"]\r\nlabels[\"data.projects\"]\r\n_tenant_\r\nresponse.data.id\r\nresponse.data.created_at\r\nresponse.data.modified_at\r\nresponse.data.name\r\nresponse.data.notes\r\nresponse.data.completed\r\nresponse.data.assignee_status\r\nresponse.data.completed_at\r\nresponse.data.due_on\r\nresponse.data.due_at\r\nresponse.data.workspace.id\r\nresponse.data.workspace.name\r\nresponse.data.num_hearts\r\nresponse.data.parent\r\nresponse.data.followers[0].id\r\nresponse.data.followers[0].name\r\nresponse.data.hearted\r\nresponse.data.assignee\r\nresponse.data.projects[0].id\r\nresponse.data.projects[0].name\r\nresponse.data.memberships[0].project.id\r\nresponse.data.memberships[0].project.name\r\nresponse.data.memberships[0].section<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h6>Report\u00a0Keys<\/h6>\n<p>Report Keys are Kore.ai variable placeholders that you can use in Report Template Definitions and Bot Responses to show links for additional information in a message that a user can click.<br \/>\n<a ref=\"magnificPopup\" href=\"\/wp-content\/uploads\/sites\/26\/DIYBotResponseVariableReportKeys.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10223\" src=\"\/wp-content\/uploads\/sites\/26\/DIYBotResponseVariableReportKeys.png\" alt=\"Report Keys\" width=\"593\" height=\"526\" \/><\/a><\/p>\n<ul>\n<li><strong>reportInfo.reportLink<\/strong>\u00a0&#8211;\u00a0The\u00a0link defined in the <strong>Report Template Definition<\/strong>\u00a0section for this task.<\/li>\n<li><strong>reportInfo.reportTitle<\/strong>\u00a0&#8211;\u00a0The title defined in the <strong>Report Template Definition<\/strong> for this task.<\/li>\n<\/ul>\n<h5>Previewing the Response<\/h5>\n<p>On the message editor, click <strong>Preview<\/strong> to generate a preview of your response using one of\u00a0the following options:<\/p>\n<ul>\n<li><strong>Test &amp; Preview<\/strong> &#8211; Opens the task setup page for your Bot to define the task settings, authenticate, and then shows a preview of your response generated through your third-party web service, for example, <em>Asana<\/em>.<\/li>\n<li><strong>Preview with sample response<\/strong> &#8211; Generates the preview using the sample data provided\u00a0with the key-value pairs defined in the\u00a0<strong>Response Sample<\/strong> section on the <strong>API Request<\/strong> tab for the task.<\/li>\n<\/ul>\n<p><a ref=\"magnificPopup\" href=\"\/wp-content\/uploads\/sites\/26\/preview.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14151\" src=\"\/wp-content\/uploads\/sites\/26\/preview.png\" alt=\"\" width=\"1010\" height=\"219\" \/><\/a><\/p>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h5>Examples of Custom JavaScript Response<\/h5>\n<p>The following examples show response objects using JavaScript to define the <strong>Post Title<\/strong> and <strong>Post Description<\/strong>\u00a0sections that display output messages to the end-user when the task response message is sent.<br \/>\nIn the following example, the variable labeled <span style=\"color: #0000ff;\">desc<\/span> is only displayed if the value for the caption is defined in the JSON response.<\/p>\n<pre class=\"\">var desc = (caption !== \"undefined\" ? caption : \"\")<\/pre>\n<p>In the next example, a clickable URL using the task <span style=\"color: #0000ff;\">title<\/span> is displayed in the task response message.<\/p>\n<pre class=\"\">var tasklink = '<a href=\"https:\/\/www.wunderlist.com\/webapp#\/tasks\/' + id + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + title + '<\/a>';<\/pre>\n<p>In this last example, the link variable depends on the <span style=\"color: #0000ff;\">type<\/span>, either <span style=\"color: #0000ff;\">video<\/span> or <span style=\"color: #0000ff;\">photo<\/span>. Based on the\u00a0<span style=\"color: #0000ff;\">type<\/span>, the proper link is displayed.<\/p>\n<pre class=\"toolbar:1 lang:default decode:true\">var link = \"\";\r\nswitch (type) {\r\n    case \"video\":\r\n        var video = (typeof(video_url) != \"undefined\") ? video_url : permalink_url;\r\n        link = '&lt;video controls&gt;&lt;source src =\"' + video + '\" type=\"video\/mp4\"&gt;&lt;\/video&gt;';\r\n        break;\r\n    case \"photo\":\r\n        link = '&lt;img src=\"' + image_permalink + '\"&gt;&lt;\/img&gt;';\r\n        break;\r\n}<\/pre>\n<p>You can create custom JavaScript to handle task-specific requirements on the <strong>JavaScript <\/strong>tab based on\u00a0the payload response for the task.<\/p>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h4>Channel-Specific\u00a0Bot Response<\/h4>\n<p>A task response message may be dependent on the channel that the response message is displayed in, for example, in the Kore.ai Messenger client, an email, or in a text message. By default, the response message that you configure for <strong>Default for all Channels<\/strong> is sent to all channels. However, you can define a specific response for one or more of the 20+ supported channels to display to the end-user in that channel instead of the default\u00a0response.<\/p>\n<ol>\n<li>To define the\u00a0response message for a specific channel, click<strong> + Add Channel<\/strong> to display the <strong>Choose a Channel<\/strong> drop-down list.<\/li>\n<li>Select a channel, for example, <strong>Kore.ai<\/strong>, and then configure the response for that channel on the <strong>JavaScript<\/strong>\u00a0tab.<\/li>\n<\/ol>\n<p><a ref=\"magnificPopup\" href=\"\/wp-content\/uploads\/sites\/26\/bot-response-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14149\" src=\"\/wp-content\/uploads\/sites\/26\/bot-response-1.png\" alt=\"\" width=\"1024\" height=\"530\" \/><\/a><br \/>\nOnly one response can be defined for each channel. The following JavaScript examples show how you can override the Kore.ai default formatting template by channel.<\/p>\n<p class=\"note\"><strong>Note:<\/strong>\u00a0Use the following keys to return default values for:<br \/>\n<span style=\"color: red; font-family: courier;\">response.message<\/span> &#8211; Returns the default message as a string.<br \/>\n<span style=\"color: red; font-family: courier;\">response.message.choices<\/span> &#8211; Returns the options choice or confirmation message types as an array.<\/p>\n<ul>\n<li><strong>Slack Channel Override Example<\/strong>\n<pre class=\"lang:default decode:true\">var message = {};\r\nvar attachments = [];\r\nvar attachment = {\r\n    'text': \"Exception occurred during API execution\",\r\n    'color': '#FFCC00',\r\n    'attachment_type': 'default'\r\n};\r\nattachments.push(attachment);\r\nmessage.attachments = attachments;\r\nprint(JSON.stringify(message));<\/pre>\n<\/li>\n<li><strong>FaceBook Channel Override Example<\/strong>\n<pre class=\"lang:default decode:true \">var message = {\r\n    text: response.message\r\n};\r\nvar buttons = [];\r\nfor (var i = 0; i &lt; response.choices.length; i++) {\r\n    var choiceItem = response.choices[i];\r\n    if (choiceItem.length &gt; 20) {\r\n        choiceItem = choiceItem.substring(\r\n            0, 18) + '..';\r\n    }\r\n    var element = {\r\n        content_type: 'text',\r\n        title: choiceItem,\r\n        payload: choiceItem\r\n    };\r\n    buttons.push(element);\r\n}\r\nmessage.quick_replies = buttons;\r\nprint(JSON.stringify(message));<\/pre>\n<\/li>\n<li><strong>Email Channel Override Example<\/strong>\n<pre class=\"lang:default decode:true \">var message = {};\r\nvar text = response.message + ' &lt;br&gt; ';\r\nfor (var i = 0; i &lt; response.choices.length; i++) {\r\n    text = text.concat(\r\n        '&lt;u&gt; + response.choices[i] + ' &lt;\r\n        \/u&gt; &lt;br&gt;');\r\n    }\r\n    message.text = text;\r\n    print(JSON.stringify(message));<\/pre>\n<\/li>\n<li><strong>SMS Channel Override Example<\/strong>\n<pre class=\"lang:default decode:true \">var message = {};\r\n    var indexArray = ['a', 'b', 'c',\r\n        'd', 'e',\r\n        'f', 'g', 'h', 'i', 'j',\r\n        'k', 'l', 'm', 'n', 'o',\r\n        'p', 'q', 'r', 's', 't',\r\n        'u', 'v', 'w', 'x', 'y',\r\n        'z'\r\n    ];\r\n    var text = response.message + '\\\\n';\r\n    for (var i = 0; i &lt; response.choices\r\n        .length; i++) {\r\n        text = text.concat(indexArray[i] +\r\n            ') ' + response.choices[\r\n                i] + '\\\\n');\r\n    }\r\n    message.text = text;\r\n    print(JSON.stringify(message));<\/pre>\n<\/li>\n<\/ul>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_auto\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div><\/div><\/div><\/div><\/div><\/section>\n","protected":false},"excerpt":{"rendered":"For some Alert tasks,\u00a0as seen here, you can define the look and feel of the data presented to the end-user when the alert is displayed based on the payload delivered by the webhook. Defining the Message Definition You can define two kinds of bot responses for a task: The default for all channels:\u00a0Author the default...","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[67],"tags":[],"class_list":["post-27067","post","type-post","status-publish","format-standard","hentry","category-alert"],"_links":{"self":[{"href":"https:\/\/developer.kore.ai\/v9-2\/wp-json\/wp\/v2\/posts\/27067","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.kore.ai\/v9-2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/developer.kore.ai\/v9-2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/developer.kore.ai\/v9-2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.kore.ai\/v9-2\/wp-json\/wp\/v2\/comments?post=27067"}],"version-history":[{"count":1,"href":"https:\/\/developer.kore.ai\/v9-2\/wp-json\/wp\/v2\/posts\/27067\/revisions"}],"predecessor-version":[{"id":27068,"href":"https:\/\/developer.kore.ai\/v9-2\/wp-json\/wp\/v2\/posts\/27067\/revisions\/27068"}],"wp:attachment":[{"href":"https:\/\/developer.kore.ai\/v9-2\/wp-json\/wp\/v2\/media?parent=27067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/developer.kore.ai\/v9-2\/wp-json\/wp\/v2\/categories?post=27067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/developer.kore.ai\/v9-2\/wp-json\/wp\/v2\/tags?post=27067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}