{"id":1125,"date":"2021-10-30T08:42:12","date_gmt":"2021-10-30T08:42:12","guid":{"rendered":"https:\/\/salarydistribution.com\/machine-learning\/2021\/10\/30\/build-conversational-experiences-for-auto-insurance-using-amazon-lex\/"},"modified":"2021-10-30T08:42:12","modified_gmt":"2021-10-30T08:42:12","slug":"build-conversational-experiences-for-auto-insurance-using-amazon-lex","status":"publish","type":"post","link":"https:\/\/salarydistribution.com\/machine-learning\/2021\/10\/30\/build-conversational-experiences-for-auto-insurance-using-amazon-lex\/","title":{"rendered":"Build conversational experiences for auto insurance using Amazon Lex"},"content":{"rendered":"<div id=\"\">\n<p>Auto insurance companies are focusing on digital innovations to meet customer needs. Digital-first engagements provide tailored coverage, transparent information, and seamless experiences. The shift to virtual channels for customer service that occurred during the pandemic is unlikely to revert to traditional channels for many customers. The change in consumer behavior continues to accelerate due to a growing population of tech-savvy customers who want to interact with businesses online. Throughout the lifecycle, customers expect a quick turnaround as they evaluate policy options (pre-purchase), make a premium payment (purchase), or report a claim (post-purchase). A faster and personalized service improves policy holder satisfaction and allows insurance agents to focus on building deeper relationships.<\/p>\n<p>In this post, we review how you can use a pre-built solution with <a href=\"https:\/\/aws.amazon.com\/lex\/\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon Lex<\/a> to enable rich, customized interactions so insurers can provide faster handling of payments processing, claims reports, policy updates, and policy quotes.<\/p>\n<h2>Solution overview<\/h2>\n<p>Amazon Lex provides the advanced deep learning functionalities of automatic speech recognition (ASR) for converting speech to text, and natural language understanding (NLU) to recognize the intent of the text, to enable you to build applications with highly engaging user experiences and lifelike conversational interactions. <a href=\"https:\/\/aws.amazon.com\/lex\/insurance\/\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon Lex for Insurance<\/a> offers pre-built solutions so you can enable more conversational experiences, faster. The pre-built bots are configured with intents, sample utterances, and slot types for credit card use cases and are integrated with <a href=\"https:\/\/aws.amazon.com\/connect\/\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon Connect<\/a> contact flows.<\/p>\n<p>Let\u2019s review a sample conversation regarding a policy quote as we cover the different components of the pre-built solution:<\/p>\n<blockquote>\n<p>Agent: Welcome to ABC insurance. How can I help you today?<\/p>\n<p>Caller: I want to get a new policy quote<\/p>\n<p>Agent: Great. I can assist you with that. What kind of policy are you calling about? Auto, or Home?<\/p>\n<p>Caller: Auto<\/p>\n<p>Agent: Ok. I will need some information about you in order to serve you the best. First, please say your date of birth, including the year.<\/p>\n<p>Caller: January 1, 2001<\/p>\n<p>Agent: Ok. What is your first name?<\/p>\n<p>Caller: Joe<\/p>\n<p>Agent: And your last name?<\/p>\n<p>Caller: Smith<\/p>\n<p>Agent: Ok, please say or enter your 10-digit phone number.<\/p>\n<p>Caller: 1234567890<\/p>\n<p>Agent: Ok. Say or enter the 5-digit zip code where you would like to insure your vehicle.<\/p>\n<p>Caller: 1234<\/p>\n<p>Agent: Tell me the make of the vehicle.<\/p>\n<p>Caller: Ford<\/p>\n<p>Agent: And what is the model?<\/p>\n<p>Caller: Focus<\/p>\n<p>Agent: And year?<\/p>\n<p>Caller: 2020<\/p>\n<p>Agent: Ok. What is the expected annual mileage?<\/p>\n<p>Caller: 10000 miles<\/p>\n<p>Agent: Thank you for providing the details. Just a second while I pull up the quote \u2026<\/p>\n<p>Agent: Based on the zip code, mileage, and other vehicle details, we can do $125 per month or $1200 annual billing.<\/p>\n<p>Caller: Thank you!<\/p>\n<\/blockquote>\n<p>In the preceding sample conversation, the agent first collects basic information (insurance type, date of birth, name, and phone number). The agent engages to complete the user request (policy quote) by starting a dialog to collect additional information (zip code and vehicle details such as make, model, year, and mileage). Lastly, the agent performs the task (registering a follow-up) and provides a response. The pre-built solution includes bots for auto insurance services that can be deployed on Amazon Lex to automate the conversations.<\/p>\n<p>The <code>AutoInsuranceBot<\/code> contains intents for common policy holder activities such as getting policy quotes, making premium payments, making a claim, finding an advisor, adding or removing a driver, and adding or removing a vehicle. It includes the following intents:<\/p>\n<ul>\n<li><strong>GetPolicyQuote<\/strong> \u2013 This intent collects caller contact details and information related to the vehicle such as make, model, year, and annual mileage to process the policy quotation<\/li>\n<li><strong>MakePremiumPayment<\/strong> \u2013 The intent collects information such as the payment amount, source account ID, and date, and processes the payment<\/li>\n<li><strong>PaymentByCard <\/strong>\u2013 The intent gathers credit card information from the user to make a payment toward a policy<\/li>\n<li><strong>MakeAClaim<\/strong> \u2013 The intent collects information related to the incident and raises a claim<\/li>\n<li><strong>FindAnAdvisor<\/strong> \u2013 The intent suggests an insurance agent, based on the location and product category<\/li>\n<li><strong>AddDriver<\/strong> \u2013 The intent adds a driver to the existing policy by collecting the driver details<\/li>\n<li><strong>AddVehicle<\/strong> \u2013 The intent adds a vehicle to the existing policy with the necessary details such as make, model, and VIN<\/li>\n<li><strong>MakeModelYear<\/strong> \u2013 A follow-up intent to <code>AddVehicle<\/code> and <code>MakeAClaim<\/code> intents<\/li>\n<li><strong>EndConversation<\/strong> \u2013 An intent to end the conversation on caller inputs such as \u201cBye\u201d and \u201cI am done\u201d<\/li>\n<li><strong>Fallback<\/strong> \u2013 The intent is invoked when the input doesn\u2019t match any of the configured intents<\/li>\n<\/ul>\n<p>The bot definition includes a complete dialog along with the prompts to manage the conversation. Each bot also integrates with an <a href=\"http:\/\/aws.amazon.com\/lambda\" target=\"_blank\" rel=\"noopener noreferrer\">AWS Lambda<\/a> function that contains code to simulate business logic execution; integration with <a href=\"https:\/\/aws.amazon.com\/kendra\/\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon Kendra<\/a> provides the ability to answer natural language questions during the conversation.<\/p>\n<h2>Solution architecture<\/h2>\n<p>Let\u2019s review the overall architecture for the solution (see the following diagram):<\/p>\n<ul>\n<li>We use an Amazon Lex bot to first authenticate the caller by verifying information that is stored in a secure database.<\/li>\n<li>We use Lambda to simulate access to backend systems and perform the authentication function. For the purposes of this post, the insurance policy data used for authentication is stored in an <a href=\"https:\/\/aws.amazon.com\/dynamodb\/\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon DynamoDB<\/a><\/li>\n<li>After the caller is authenticated, the control is passed to the main insurance bot to perform transactions (for example, make a payment) or provide the caller with requested information (for example, \u201cWhat good driver discounts do you provide?\u201d). We use Lambda to run business logic required for running transactions.<\/li>\n<li>To answer any user questions, we configure an Amazon Kendra search index so the bot can look up the information and provide a response.<\/li>\n<li>You can deploy the conversational experience on an Amazon Connect instance or integrate with your website.<\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-30047\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59\/2021\/10\/29\/1-6098-Architecture.jpg\" alt=\"\" width=\"800\" height=\"495\"><\/p>\n<p>We include a template that creates an <a href=\"http:\/\/aws.amazon.com\/cloudformation\" target=\"_blank\" rel=\"noopener noreferrer\">AWS CloudFormation<\/a> stack containing all these AWS resources, as well as the required <a href=\"http:\/\/aws.amazon.com\/iam\" target=\"_blank\" rel=\"noopener noreferrer\">AWS Identity and Access Management<\/a> (IAM) roles. With these resources in place, you can use the pre-built solution for auto insurance on the Amazon Connect channel.<\/p>\n<h2>Prerequisites<\/h2>\n<p>You should have the following prerequisites before we deploy the solution:<\/p>\n<ul>\n<li>An <a href=\"https:\/\/signin.aws.amazon.com\/signin?redirect_uri=https%3A%2F%2Fportal.aws.amazon.com%2Fbilling%2Fsignup%2Fresume&amp;client_id=signup\" target=\"_blank\" rel=\"noopener noreferrer\">AWS account<\/a><\/li>\n<li>Access to the following AWS services:\n<ul>\n<li>Amazon Lex to create bots<\/li>\n<li>Lambda for the business logic functions<\/li>\n<li>DynamoDB to create the tables<\/li>\n<li>IAM with access to create policies and roles<\/li>\n<li>AWS CloudFormation to run the stack<\/li>\n<\/ul>\n<\/li>\n<li>IAM access and secret key credentials<\/li>\n<li>Optionally, an existing Amazon Connect instance (if you plan to deploy on Amazon Connect)<\/li>\n<\/ul>\n<h2>Deploy the pre-built solution<\/h2>\n<p>To deploy this solution, complete the following steps:<\/p>\n<ol>\n<li>Choose <strong>Launch Stack<\/strong> to launch a CloudFormation stack in the Region of your choice:<\/li>\n<\/ol>\n<p><a href=\"https:\/\/console.aws.amazon.com\/cloudformation\/home?#\/stacks\/quickcreate?templateURL=https:\/\/lex-usecases-templates.s3.amazonaws.com\/auto_insurance.yaml&amp;stackName=insurance-auto-stack\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-16174\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59\/2020\/09\/22\/LaunchStack.jpg\" alt=\"\" width=\"144\" height=\"27\"><\/a><\/p>\n<ol start=\"2\">\n<li>For <strong>Stack name<\/strong>, enter a name for your stack. This post uses the name auto-insurance-solution.<\/li>\n<\/ol>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-30048\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59\/2021\/10\/29\/2-6098-Quick-create-stack.jpg\" alt=\"\" width=\"800\" height=\"433\"><\/p>\n<ol start=\"3\">\n<li>In the <strong>Parameters<\/strong> section, enter values for the for Amazon Lex bots, DynamoDB table, and Amazon Connect contact flow.<\/li>\n<\/ol>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-30049\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59\/2021\/10\/29\/3-6098-Parameters.jpg\" alt=\"\" width=\"800\" height=\"494\"><\/p>\n<ol start=\"4\">\n<li>Review the IAM resource creation and choose <strong>Create stack<\/strong>.<\/li>\n<\/ol>\n<p>After a few minutes, your stack should be complete. The core resources are as follows:<\/p>\n<ul>\n<li><strong>Amazon Lex bot<\/strong> \u2013 <code>AutoInsurance<\/code><\/li>\n<li><strong>Lambda function<\/strong> \u2013 <code>AutoInsuranceBusinessLogic<\/code><\/li>\n<li><strong>DynamoDB table<\/strong> \u2013 <code>auto_insurance_table<\/code><\/li>\n<li><strong>Amazon Connect contact flow<\/strong> \u2013 <code>AutoInsuranceContactFlow<\/code><\/li>\n<li><strong>IAM roles<\/strong> \u2013 <code>LexRole<\/code>, <code>LexImportRole<\/code>, <code>LambdaRole<\/code>, and <code>ConnectRole<\/code><\/li>\n<\/ul>\n<ol start=\"5\">\n<li>If you provided an Amazon Connect ARN during stack creation, navigate to the Amazon Connect dashboard and choose <strong>Phone numbers<\/strong> on the <strong>Routing <\/strong>menu in the navigation pane.<\/li>\n<\/ol>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-30050\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59\/2021\/10\/29\/4-6098-Connect.jpg\" alt=\"\" width=\"800\" height=\"466\"><\/p>\n<ol start=\"6\">\n<li>Next, associate a phone number with the card services contact flow.<\/li>\n<\/ol>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-30051\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59\/2021\/10\/29\/5-6098-Edit.jpg\" alt=\"\" width=\"800\" height=\"467\"><\/p>\n<p>After the phone number is associated, the solution is ready to be tested.<\/p>\n<h2>Test the solution<\/h2>\n<p>You can use <a href=\"https:\/\/lex-usecases-templates.s3.amazonaws.com\/Auto_Insurance_Sample_Data.html\" target=\"_blank\" rel=\"noopener noreferrer\">sample data<\/a> to test the bot. If you used an Amazon Connect instance for deployment, you can call in to the Amazon Connect phone number and interact with the bot. You can also test the solution directly on the Amazon Lex console using voice or text. As you engage with the bot, you can observe the DynamoDB table update based on the conversation. After you try out the pre-built conversation flows, you can customize the bot to add more intents as required and integrate with the backend systems.<\/p>\n<h2>Auto insurance: Key capabilities<\/h2>\n<p>Let\u2019s review some of the core capabilities offered by the pre-built solution, including re-eliciting slots, repeating important information, using context and context attributes, and contact center flows.<\/p>\n<h3>Re-elicit information<\/h3>\n<p>In a customer service conversation, agents have to clarify a question as they collect information. For example, for an auto insurance claim, the initial question might be \u201cWhere did the damage occur?\u201d If the caller doesn\u2019t respond with a specific part of the car, a follow-up question could be more prescriptive: \u201cSorry, I did not follow that. Can you share where the damage occurred? For example, it could be the windshield, bumper, or the door.\u201d The following code shows this conversation flow example:<\/p>\n<div class=\"hide-language\">\n<pre><code class=\"lang-python\">if year_of_vehicle and not damaged_auto_component:\n        previous_slot_to_elicit = dialog.get_previous_slot_to_elicit(\n                                                                intent_request)\n        if previous_slot_to_elicit == 'DamagedAutoComponent':\n            '''\n             User input did not get resolved to a slot value. So, re-eliciting the \n             same slot one more time with a guided prompt\n            '''\n            prompt = \"Sorry, I did not follow that. Where did the damage occur? \n\t\tYou can say something like \u2018to the windshield\u2019, \u2018to the bumper\u2019 \n\t\tor \u2018to the door\u2019 etc\"\n            return dialog.elicit_slot('DamagedAutoComponent',active_contexts,\n                session_attributes,intent,\n                [{'contentType': 'PlainText', 'content': prompt}])\n<\/code><\/pre>\n<\/p><\/div>\n<h3>Repeat responses<\/h3>\n<p>Callers may want the agent to repeat with a simple request (\u201cCan you say that again?\u201d) to confirm a question or just capture important information. The pre-built solution offers a capability to store the response and then play it again when requested by the caller. <a href=\"https:\/\/docs.aws.amazon.com\/lex\/latest\/dg\/built-in-intent-repeat.html\" target=\"_blank\" rel=\"noopener noreferrer\">AMAZON.RepeatIntent<\/a> responds to the user\u2019s words and phrases, to repeat the bot\u2019s previous message. The following is the code for repeating bot responses:<\/p>\n<div class=\"hide-language\">\n<pre><code class=\"lang-python\">if intent_name == 'Repeat':\n    active_contexts = dialog.get_active_contexts(intent_request)\n    session_attributes = dialog.get_session_attributes(intent_request)\n    intent = dialog.get_intent(intent_request)\n    previous_message = dialog.get_session_attribute(\n        intent_request, 'previous_message')\n\n    if previous_message:\n        return dialog.elicit_intent(\n            active_contexts, session_attributes, intent, \n            json.loads(previous_message))\n    else:\n        return dialog.elicit_intent(\n            active_contexts, session_attributes, intent, \n            [{\n                'contentType': 'PlainText', \n                'content': \"I am sorry. I am unable to repeat that. \n                    Is there anything else I can help you with?\"}])\n\n\u2026\n\u2026\n\n# following is a dialog utility function \ndef elicit_slot(slotToElicit, active_contexts, session_attributes, intent, messages):\n    intent['state'] = 'InProgress'\n    \n    if not session_attributes:\n        session_attributes = {}\n    session_attributes['previous_message'] = json.dumps(messages)\n    session_attributes['previous_dialog_action_type'] = 'ElicitSlot'\n    session_attributes['previous_slot_to_elicit'] = slotToElicit\n    \n    return {\n        'sessionState': {\n            'sessionAttributes': session_attributes,\n            'activeContexts': active_contexts,\n            'dialogAction': {\n                'type': 'ElicitSlot',\n                'slotToElicit': slotToElicit\n            },\n            'intent': intent\n        },\n        'requestAttributes': {},\n        'messages': messages\n    }\n<\/code><\/pre>\n<\/p><\/div>\n<h3>Manage flows<\/h3>\n<p>The conversation flow can vary depending on the transaction. For example, when making an insurance payment, the flow changes based on the choice of the payment method. If the customer wants to use a credit card as the payment method, then the agent needs to collect the 16-digit card number, expiration date, and security code. If the caller prefers to use an electronic check, the agent needs to collect the account ID and the routing number. The pre-built solutions use a context management capability so you can manage such flows. The bot uses two separate intents to collect the payment details depending on the payment type (card or check): PaymentByCard and PaymentByElectronicCheck. The MakePremiumPayment intent captures basic information such as policy ID and sets the output context based on payment type. Upon the next user utterance, the appropriate intent is triggered based on the input context attribute. The following code shows how the contexts are managed:<\/p>\n<div class=\"hide-language\">\n<pre><code class=\"lang-python\"># fulfilment of MakePremiumPaymentIntent      \nif payment_amount:\n    status, date, remaining_statement_balance, amount \n        = insurance_system.get_next_payment_details(\n            customer_id)\n    dialog.set_active_contexts(\n        intent_request, 'CardPayment', \n        {\n            'PhoneNumber':phone_number, \n            'DOB':dob, \n            'PaymentAmount':payment_amount,\n            'PaymentMethod':payment_method,'Date':date\n        },\n        120, 10)\n    dialog.set_active_contexts(\n        intent_request, 'ElectronicCheckPayment', \n        {\n            'PhoneNumber':phone_number,\n            'DOB':dob,\n            'PaymentAmount':payment_amount,\n            'PaymentMethod':payment_method,'Date':date\n        },\n        120, 10)\n    prompt = \"Okay then, how would you like to pay, \n        by credit card, debit card, or electronic transfer?\"\n    return dialog.elicit_intent(\n        active_contexts, session_attributes, intent,\n        [{'contentType': 'PlainText', 'content': prompt}])\n<\/code><\/pre>\n<\/p><\/div>\n<h3>Contact center flows<\/h3>\n<p>You can deploy the pre-built solution as part of Amazon Connect contact flows. When customers call into your contact center, the contact flow to which they are sent is the one assigned to the telephone number that they called. The contact flow uses a Get customer input block to invoke the Amazon Lex bot. The following diagram illustrates the auto insurance contact flow.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-30052\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59\/2021\/10\/29\/6-6098.jpg\" alt=\"\" width=\"800\" height=\"410\"><\/p>\n<h2>Clean up<\/h2>\n<p>To avoid incurring any charges in the future, delete all the resources created:<\/p>\n<ul>\n<li>Amazon Lex bots<\/li>\n<li>Lambda functions<\/li>\n<li>DynamoDB table<\/li>\n<li>Amazon Connect contact flow<\/li>\n<li>IAM roles<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>Amazon Lex for Insurance offers pre-built solutions that you can use to accelerate the delivery of engaging conversational experiences for increased customer satisfaction. In this post, we reviewed a solution for the auto insurance customer service function, related to activities such as providing a quote, processing a claim, and making a payment. The pre-built solution provides a ready-to-deploy contact center configuration with Amazon Connect. You can easily extend the solution with additional conversation flows that are specific to your organization\u2019s needs. AWS enables an agile infrastructure for insurance organizations to optimize and innovate your business and deepen customer relationships. Try the pre-built <a href=\"https:\/\/aws.amazon.com\/lex\/insurance\/\" target=\"_blank\" rel=\"noopener noreferrer\">insurance solutions<\/a> on Amazon Lex today!<\/p>\n<hr>\n<h3>About the Author<\/h3>\n<p><strong><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-27294 alignleft\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59\/2021\/08\/17\/Sandeep-Srinivasan.jpg\" alt=\"\" width=\"100\" height=\"106\">Sandeep Srinivasan<\/strong>\u00a0is a Product Manager on the Amazon Lex team. As a keen observer of human behavior, he is passionate about customer experience. He spends his waking hours at the intersection of people, technology, and the future.<\/p>\n<p><strong><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-30075 alignleft\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59\/2021\/10\/29\/Harish-Lanka.jpg\" alt=\"\" width=\"100\" height=\"128\">Harish Lanka<\/strong>\u00a0is a Conversational AI Specialist on the\u00a0<a href=\"http:\/\/smartbots.ai\/\">Smartbots.ai<\/a>\u00a0team. He spends his time talking to businesses, understanding their pain points and designing solutions using conversational AI. When he is not at his desk, he is either trading stocks, watching football or reading about spirituality.<\/p>\n<p>       <!-- '\"` -->\n      <\/div>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/aws.amazon.com\/blogs\/machine-learning\/build-conversational-experiences-for-auto-insurance-using-amazon-lex\/<\/p>\n","protected":false},"author":0,"featured_media":1126,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/posts\/1125"}],"collection":[{"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/comments?post=1125"}],"version-history":[{"count":0,"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/posts\/1125\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/media\/1126"}],"wp:attachment":[{"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/media?parent=1125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/categories?post=1125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/tags?post=1125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}