{"id":417,"date":"2025-12-03T07:13:37","date_gmt":"2025-12-03T07:13:37","guid":{"rendered":"https:\/\/i-cte.org\/robot\/?p=417"},"modified":"2025-12-31T10:35:18","modified_gmt":"2025-12-31T10:35:18","slug":"hopes-and-intentions-reading-comprehension","status":"publish","type":"post","link":"https:\/\/i-cte.org\/robot\/hopes-and-intentions-reading-comprehension\/","title":{"rendered":"Hopes and Intentions &#8211; Reading Comprehension"},"content":{"rendered":"\n<p>This Robot is used for practicing English at level A2. In order to interact with this Robot smoothly, please use a laptop, desktop, or iPad. Do not use Smartphones, though they are sometimes fine. It depends on the updated browsers and Internet connection.<\/p>\n\n\n\n<section class=\"icte-robot-onecol\" aria-label=\"Reading Comprehension Robot\">\n  <!-- Optional: top nav (keeps your existing links) -->\n  <nav class=\"icte-robot-onecol__nav\" aria-label=\"Lesson navigation\">\n    <a href=\"https:\/\/i-cte.org\/robot\/hopes-and-intentions-conversation\/\">Conversation<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/hopes-and-intentions-vocabulary\/\">Vocabulary<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/hopes-and-intentions-real-life\/\">Real Life<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/hopes-and-intentions-describing-pictures\/\">Describing Pictures<\/a>\n    <a class=\"is-active\" href=\"https:\/\/i-cte.org\/robot\/hopes-and-intentions-reading-comprehension\/\">Reading<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/hopes-and-intentions-listening\/\">Listening<\/a>\n  <\/nav>\n\n  <!-- Hero image + instruction -->\n  <figure class=\"icte-robot-onecol__figure\">\n    <img decoding=\"async\"\n      src=\"https:\/\/i-cte.org\/robot\/wp-content\/uploads\/2025\/11\/6.webp\"\n      alt=\"Two letters between Nobuko in Japan and Trisha in Shanghai\"\n      loading=\"lazy\"\n    \/>\n  <\/figure>\n\n  <div class=\"icte-robot-onecol__intro\">\n    <p><strong>Quickly read the letters.<\/strong> Then answer the questions about Nobuko and Trisha.<\/p>\n  <\/div>\n\n  <!-- Reading box -->\n  <section class=\"icte-robot-onecol__panel\" aria-label=\"Reading\">\n    <div class=\"icte-robot-onecol__panelHead\">\n      <h2 class=\"icte-robot-onecol__h2\">Reading<\/h2>\n      <button id=\"toggle-reading\" class=\"icte-btn icte-btn--ghost\" type=\"button\">Hide<\/button>\n    <\/div>\n\n    <!-- Keep this ID: JS fills letters here -->\n    <div id=\"word-box\" class=\"icte-robot-onecol__reading\" role=\"region\" aria-label=\"Letters\"><\/div>\n\n    <div class=\"icte-robot-onecol__audioRow\">\n      <button id=\"read-letter-1\" class=\"icte-btn icte-btn--primary\" type=\"button\">\ud83d\udd0a Play Letter 1<\/button>\n      <button id=\"read-letter-2\" class=\"icte-btn icte-btn--primary\" type=\"button\">\ud83d\udd0a Play Letter 2<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- Questions + controls -->\n  <section class=\"icte-robot-onecol__panel\" aria-label=\"Questions\">\n    <div class=\"icte-robot-onecol__panelHead\">\n      <h2 class=\"icte-robot-onecol__h2\">Questions<\/h2>\n      <span class=\"icte-loader\" id=\"synthesis-loader\" aria-hidden=\"true\"><\/span>\n    <\/div>\n\n    <!-- Keep this ID: JS renders questions + feedback here -->\n    <div id=\"chat-messages\" class=\"icte-robot-onecol__questions\" role=\"region\" aria-label=\"Questions and feedback\"><\/div>\n\n    <div class=\"icte-robot-onecol__controls\">\n      <div class=\"icte-robot-onecol__control\">\n        <label for=\"voice-select\"><strong>Choose Voice<\/strong><\/label>\n        <select id=\"voice-select\" aria-label=\"Select Voice\">\n          <option value=\"\">Loading voices&#8230;<\/option>\n        <\/select>\n      <\/div>\n\n      <div class=\"icte-robot-onecol__btnRow\">\n        <button id=\"read-questions\" class=\"icte-btn icte-btn--info\" type=\"button\">\ud83d\udd0a Play Questions<\/button>\n        <button id=\"start-btn\" class=\"icte-btn icte-btn--primary\" type=\"button\">Check Answers<\/button>\n        <button id=\"show-answers-btn\" class=\"icte-btn icte-btn--dark\" type=\"button\">\ud83d\udc40 Show All Correct Answers<\/button>\n        <button id=\"stop-btn\" class=\"icte-btn icte-btn--danger\" type=\"button\">\u23f9 Stop Audio<\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <style>\n    \/* Single-column + theme-friendly: does NOT force full-width, does NOT reset body *\/\n    .icte-robot-onecol{\n      width: 100%;\n      max-width: 100%;\n      margin: 1rem 0;\n      font: inherit;\n      color: inherit;\n    }\n\n    .icte-robot-onecol__nav{\n      display:flex;\n      flex-wrap:wrap;\n      gap:.5rem;\n      margin: .75rem 0 1rem;\n    }\n    .icte-robot-onecol__nav a{\n      text-decoration:none;\n      padding: .45rem .7rem;\n      border: 1px solid rgba(0,0,0,.12);\n      border-radius: 999px;\n      font-weight: 700;\n      font-size: .95rem;\n      color: inherit;\n      background: rgba(255,255,255,.6);\n    }\n    .icte-robot-onecol__nav a.is-active{\n      border-color: rgba(22,163,74,.45);\n      background: rgba(22,163,74,.10);\n    }\n\n    .icte-robot-onecol__figure{ margin: 0 0 .75rem; }\n    .icte-robot-onecol__figure img{\n      width: 100%;\n      height: auto;\n      border-radius: 14px;\n      display:block;\n    }\n\n    .icte-robot-onecol__intro{\n      margin: 0 0 1rem;\n      padding: .85rem 1rem;\n      border: 1px solid rgba(0,0,0,.10);\n      border-radius: 14px;\n      background: rgba(255,255,255,.7);\n    }\n    .icte-robot-onecol__intro p{ margin: 0; }\n\n    .icte-robot-onecol__panel{\n      margin: 0 0 1rem;\n      border: 1px solid rgba(0,0,0,.10);\n      border-radius: 14px;\n      background: rgba(255,255,255,.85);\n      overflow: hidden;\n    }\n    .icte-robot-onecol__panelHead{\n      display:flex;\n      align-items:center;\n      justify-content:space-between;\n      gap: .75rem;\n      padding: .85rem 1rem;\n      border-bottom: 1px solid rgba(0,0,0,.08);\n      background: rgba(0,0,0,.03);\n    }\n    .icte-robot-onecol__h2{\n      margin: 0;\n      font-size: 1.05rem;\n      font-weight: 900;\n    }\n\n    .icte-robot-onecol__reading{\n      padding: .9rem 1rem;\n      line-height: 1.6;\n      max-height: 520px;\n      overflow: auto;\n    }\n    .icte-robot-onecol__reading > div{ margin: 0 0 .5rem; }\n\n    .icte-robot-onecol__audioRow{\n      padding: 0 1rem 1rem;\n      display:flex;\n      gap:.6rem;\n      flex-wrap:wrap;\n    }\n\n    .icte-robot-onecol__questions{\n      padding: .9rem 1rem;\n    }\n\n    .icte-robot-onecol__controls{\n      padding: .85rem 1rem 1rem;\n      border-top: 1px solid rgba(0,0,0,.08);\n      background: rgba(0,0,0,.02);\n    }\n    .icte-robot-onecol__control label{\n      display:block;\n      margin-bottom: .35rem;\n    }\n    .icte-robot-onecol__control select{\n      width: 100%;\n      max-width: 520px;\n      padding: .6rem .7rem;\n      border-radius: 12px;\n      border: 1px solid rgba(0,0,0,.18);\n      background: #fff;\n      font: inherit;\n    }\n\n    .icte-robot-onecol__btnRow{\n      margin-top: .85rem;\n      display:flex;\n      gap:.6rem;\n      flex-wrap:wrap;\n    }\n\n    .icte-btn{\n      appearance:none;\n      border: 1px solid transparent;\n      border-radius: 12px;\n      padding: .65rem .85rem;\n      font-weight: 900;\n      cursor:pointer;\n      font: inherit;\n    }\n    .icte-btn--primary{ background:#16a34a; color:#fff; }\n    .icte-btn--info{ background:#0ea5e9; color:#fff; }\n    .icte-btn--danger{ background:#dc2626; color:#fff; }\n    .icte-btn--dark{ background:#334155; color:#fff; }\n    .icte-btn--ghost{\n      background: transparent;\n      border-color: rgba(0,0,0,.20);\n      color: inherit;\n      padding: .45rem .7rem;\n    }\n\n    .icte-loader{\n      width: 18px; height: 18px; border-radius: 999px;\n      border: 3px solid rgba(0,0,0,.15);\n      border-top-color: #0ea5e9;\n      display:none;\n      animation: icteSpin 1s linear infinite;\n    }\n    @keyframes icteSpin{ to{ transform: rotate(360deg); } }\n\n    \/* For the question UI your JS generates *\/\n    .icte-robot-onecol .message{\n      margin: 0 0 .6rem;\n      padding: .65rem .75rem;\n      border-radius: 12px;\n      font-size: .98rem;\n      line-height: 1.5;\n    }\n    .icte-robot-onecol .bot-message{\n      background: rgba(14,165,233,.12);\n      border: 1px solid rgba(14,165,233,.18);\n    }\n    .icte-robot-onecol .user-message{\n      background: rgba(245,158,11,.14);\n      border: 1px solid rgba(245,158,11,.20);\n      text-align:right;\n    }\n    .icte-robot-onecol input[type=\"text\"]{\n      width: 100%;\n      max-width: 720px;\n      padding: .6rem .7rem;\n      border-radius: 12px;\n      border: 1px solid rgba(0,0,0,.18);\n      font: inherit;\n      margin-top: .35rem;\n    }\n  <\/style>\n\n  <script>\n    \/* ===== Reused reading + questions (same content as your file) ===== *\/\n    const letterNobuko = `Dear Trisha,\nHi. How are you? Are you enjoying life in Shanghai? What\u2019s the school like?\n\nI\u2019m writing to tell you about some things I hope to do after graduation. I want to travel abroad, like you, and visit a lot of different countries. I\u2019m going to learn Spanish because I want to go to Latin America, and I\u2019m going to improve my English, too! I\u2019m going to travel around for six months, and then I\u2019m going to come back and find a great job. I don\u2019t want to be a teacher, though (I think your job is very hard!). I want to work in a big company. I\u2019d like to work in Tokyo because I have a lot of friends here. As you know, it\u2019s fairly expensive, so I\u2019m going to live with my family at first, but then I\u2019d like to share an apartment with friends.\n\nAnyway, that\u2019s my news! How about you? When are you going to visit Japan?\nBest wishes,\nNobuko`;\n\n    const letterTrisha = `Dear Nobuko,\nThanks for your letter. It\u2019s nice to hear from you. Shanghai is great and I\u2019m having a lot of fun here. The students are very friendly and the weather is good, too. Good luck in Latin America! Are you going to visit Mexico? It\u2019s my favorite country (the food is wonderful). Please send me a postcard.\n\nI\u2019d like to come to Japan again, but I\u2019m going to travel around here first. It\u2019s a big country and there\u2019s a lot to see!\n\nKeep in touch,\nTrisha`;\n\n    const whQuestions = [\n      { id: 1, question: \"Where does Nobuko live?\", modelAnswer: \"She lives in Tokyo (Japan).\", check: (a) => a.includes(\"tokyo\") },\n      { id: 2, question: \"What is Trisha\u2019s job?\", modelAnswer: \"She is a teacher.\", check: (a) => a.includes(\"teacher\") },\n      { id: 3, question: \"Where is Trisha now?\", modelAnswer: \"She is in Shanghai.\", check: (a) => a.includes(\"shanghai\") },\n      { id: 4, question: \"Why does Nobuko want to learn Spanish?\", modelAnswer: \"Because she wants to go to Latin America.\", check: (a) => a.includes(\"latin america\") },\n      { id: 5, question: \"How long is Nobuko going to go traveling for?\", modelAnswer: \"For six months.\", check: (a) => a.includes(\"six months\") || a.includes(\"6 months\") },\n      { id: 6, question: \"What is she going to do when she returns to Japan?\", modelAnswer: \"She is going to come back and find a great job.\", check: (a) => (a.includes(\"find\") || a.includes(\"get\")) && a.includes(\"job\") },\n      { id: 7, question: \"Where would she like to live?\", modelAnswer: \"She would like to share an apartment with friends.\", check: (a) => a.includes(\"apartment\") && a.includes(\"friends\") },\n      { id: 8, question: \"Is Trisha going to visit Japan again?\", modelAnswer: \"Yes, she is. She\u2019d like to come to Japan again.\", check: (a) => a.startsWith(\"yes\") || (a.includes(\"she\") && a.includes(\"will\")) || a.includes(\"going to\") }\n    ];\n\n    const speechSynthesisSupported = (\"speechSynthesis\" in window);\n    let voices = [];\n    let selectedVoice = null;\n\n    function showSynthesisLoader(show){\n      const loader = document.getElementById(\"synthesis-loader\");\n      if (!loader) return;\n      loader.style.display = show ? \"inline-block\" : \"none\";\n    }\n\n    function stopSpeaking(){\n      if (speechSynthesisSupported) {\n        window.speechSynthesis.cancel();\n        showSynthesisLoader(false);\n      }\n    }\n\n    function sayText(text, lang){\n      return new Promise((resolve) => {\n        if (!speechSynthesisSupported) return resolve();\n        const u = new SpeechSynthesisUtterance(text);\n        u.lang = lang || \"en-US\";\n        u.rate = 1.0;\n        u.pitch = 1.0;\n        if (selectedVoice) u.voice = selectedVoice;\n        u.onend = resolve;\n        u.onerror = resolve;\n        window.speechSynthesis.speak(u);\n      });\n    }\n\n    function loadVoices(){\n      if (!speechSynthesisSupported) return;\n      voices = window.speechSynthesis.getVoices();\n      if (voices.length === 0) {\n        window.speechSynthesis.onvoiceschanged = () => {\n          voices = window.speechSynthesis.getVoices();\n          populateVoiceList();\n        };\n      } else {\n        populateVoiceList();\n      }\n    }\n\n    function populateVoiceList(){\n      const voiceSelect = document.getElementById(\"voice-select\");\n      if (!voiceSelect) return;\n\n      voiceSelect.innerHTML = \"\";\n      const enVoices = voices.filter(v => (v.lang || \"\").toLowerCase().startsWith(\"en\"));\n      const usable = enVoices.length ? enVoices : voices;\n\n      usable.forEach((v, idx) => {\n        const opt = document.createElement(\"option\");\n        opt.value = String(idx);\n        opt.textContent = `${v.name} (${v.lang})`;\n        voiceSelect.appendChild(opt);\n      });\n\n      selectedVoice = usable[0] || null;\n      voiceSelect.onchange = () => {\n        selectedVoice = usable[Number(voiceSelect.value)] || usable[0] || null;\n      };\n    }\n\n    function clearWordBox(){\n      const wordBox = document.getElementById(\"word-box\");\n      if (wordBox) wordBox.innerHTML = \"\";\n    }\n\n    function addSentenceToBox(sentence){\n      const wordBox = document.getElementById(\"word-box\");\n      if (!wordBox) return;\n      const div = document.createElement(\"div\");\n      div.innerText = sentence;\n      wordBox.appendChild(div);\n    }\n\n    function appendMessage(text, sender){\n      const container = document.getElementById(\"chat-messages\");\n      if (!container) return;\n      const msg = document.createElement(\"div\");\n      msg.classList.add(\"message\", sender === \"bot\" ? \"bot-message\" : \"user-message\");\n      msg.innerText = text;\n      container.appendChild(msg);\n      container.scrollTop = container.scrollHeight;\n    }\n\n    function showLetters(){\n      clearWordBox();\n      addSentenceToBox(\"Letter 1 \u2013 From Nobuko to Trisha:\");\n      addSentenceToBox(\"\");\n      letterNobuko.split(\"\\n\").forEach(line => addSentenceToBox(line));\n      addSentenceToBox(\"\");\n      addSentenceToBox(\"Letter 2 \u2013 From Trisha to Nobuko:\");\n      addSentenceToBox(\"\");\n      letterTrisha.split(\"\\n\").forEach(line => addSentenceToBox(line));\n    }\n\n    function renderQuestions(){\n      const chat = document.getElementById(\"chat-messages\");\n      if (!chat) return;\n      chat.innerHTML = \"\";\n\n      const instr = document.createElement(\"p\");\n      instr.innerHTML = \"<strong>Answer the questions.<\/strong> Write short answers in the boxes.\";\n      chat.appendChild(instr);\n\n      whQuestions.forEach((q) => {\n        const block = document.createElement(\"div\");\n        block.style.marginBottom = \"12px\";\n\n        const label = document.createElement(\"label\");\n        label.htmlFor = `wh-q${q.id}`;\n        label.textContent = `${q.id}. ${q.question}`;\n        block.appendChild(label);\n\n        const input = document.createElement(\"input\");\n        input.type = \"text\";\n        input.id = `wh-q${q.id}`;\n        block.appendChild(input);\n\n        const fb = document.createElement(\"div\");\n        fb.id = `wh-feedback-${q.id}`;\n        fb.style.fontSize = \"0.95rem\";\n        fb.style.marginTop = \"6px\";\n        block.appendChild(fb);\n\n        chat.appendChild(block);\n      });\n    }\n\n    function normalizeText(text){\n      return (text || \"\").toLowerCase().replace(\/\\s+\/g, \" \").trim();\n    }\n\n    function checkAnswers(){\n      let score = 0;\n      const total = whQuestions.length;\n\n      whQuestions.forEach((q) => {\n        const input = document.getElementById(`wh-q${q.id}`);\n        const fb = document.getElementById(`wh-feedback-${q.id}`);\n        if (!input || !fb) return;\n\n        const norm = normalizeText(input.value);\n\n        if (!norm) {\n          fb.textContent = \"Please answer this question.\";\n          fb.style.color = \"#8a5a00\";\n          input.style.borderColor = \"#f59e0b\";\n          return;\n        }\n\n        if (q.check(norm)) {\n          score++;\n          fb.textContent = \"\u2705 Correct. \" + q.modelAnswer;\n          fb.style.color = \"#065f46\";\n          input.style.borderColor = \"#16a34a\";\n        } else {\n          fb.textContent = \"\u274c Not quite. \" + q.modelAnswer;\n          fb.style.color = \"#991b1b\";\n          input.style.borderColor = \"#dc2626\";\n        }\n      });\n\n      const result = `You got ${score} out of ${total} correct.`;\n      appendMessage(result, \"bot\");\n\n      if (speechSynthesisSupported) {\n        showSynthesisLoader(true);\n        sayText(result, \"en-US\").then(() => showSynthesisLoader(false));\n      }\n    }\n\n    function showAllCorrectAnswers(){\n      whQuestions.forEach((q) => {\n        const fb = document.getElementById(`wh-feedback-${q.id}`);\n        const input = document.getElementById(`wh-q${q.id}`);\n        if (!fb) return;\n        fb.textContent = \"Correct answer: \" + q.modelAnswer;\n        fb.style.color = \"#0f172a\";\n        fb.style.fontWeight = \"800\";\n        if (input) input.style.borderColor = \"#94a3b8\";\n      });\n      appendMessage(\"All correct answers are shown below each question.\", \"bot\");\n    }\n\n    function pickVoiceByHint(hints = []){\n      if (!speechSynthesisSupported || !voices || voices.length === 0) return null;\n      const lowerHints = hints.map(h => String(h).toLowerCase());\n      const enVoices = voices.filter(v => (v.lang || \"\").toLowerCase().startsWith(\"en\"));\n      for (const v of enVoices) {\n        const name = (v.name || \"\").toLowerCase();\n        if (lowerHints.some(h => name.includes(h))) return v;\n      }\n      return enVoices[0] || voices[0] || null;\n    }\n\n    function sayTextWithVoice(text, voice, lang){\n      return new Promise((resolve) => {\n        if (!speechSynthesisSupported) return resolve();\n        const u = new SpeechSynthesisUtterance(text);\n        u.lang = lang || \"en-US\";\n        u.rate = 1.0;\n        u.pitch = 1.0;\n        u.voice = voice || selectedVoice || null;\n        u.onend = resolve;\n        u.onerror = resolve;\n        window.speechSynthesis.speak(u);\n      });\n    }\n\n    function sanitizeForSpeech(text){\n      return String(text || \"\").replace(\/\\s+\/g, \" \").trim();\n    }\n\n    async function playLetter1(){\n      if (!speechSynthesisSupported) return;\n      stopSpeaking();\n      showSynthesisLoader(true);\n      const voice = pickVoiceByHint([\"female\",\"samantha\",\"zira\",\"susan\"]) || selectedVoice;\n      await sayTextWithVoice(\"Letter one. From Nobuko to Trisha.\", voice, \"en-US\");\n      await sayTextWithVoice(sanitizeForSpeech(letterNobuko), voice, \"en-US\");\n      showSynthesisLoader(false);\n    }\n\n    async function playLetter2(){\n      if (!speechSynthesisSupported) return;\n      stopSpeaking();\n      showSynthesisLoader(true);\n      const voice = pickVoiceByHint([\"female\",\"samantha\",\"zira\",\"susan\"]) || selectedVoice;\n      await sayTextWithVoice(\"Letter two. From Trisha to Nobuko.\", voice, \"en-US\");\n      await sayTextWithVoice(sanitizeForSpeech(letterTrisha), voice, \"en-US\");\n      showSynthesisLoader(false);\n    }\n\n    async function playAllQuestions(){\n      if (!speechSynthesisSupported) return;\n      stopSpeaking();\n      showSynthesisLoader(true);\n      const voice = pickVoiceByHint([\"male\",\"alex\",\"david\"]) || selectedVoice;\n      await sayTextWithVoice(\"Now, answer the questions.\", voice, \"en-US\");\n      for (const q of whQuestions) {\n        await sayTextWithVoice(`Question ${q.id}. ${q.question}`, voice, \"en-US\");\n      }\n      showSynthesisLoader(false);\n    }\n\n    function wireUI(){\n      const startBtn = document.getElementById(\"start-btn\");\n      const stopBtn = document.getElementById(\"stop-btn\");\n      const showBtn = document.getElementById(\"show-answers-btn\");\n      const btnL1 = document.getElementById(\"read-letter-1\");\n      const btnL2 = document.getElementById(\"read-letter-2\");\n      const btnQs = document.getElementById(\"read-questions\");\n      const toggleReading = document.getElementById(\"toggle-reading\");\n      const wordBox = document.getElementById(\"word-box\");\n\n      if (startBtn) startBtn.onclick = checkAnswers;\n      if (stopBtn) stopBtn.onclick = stopSpeaking;\n      if (showBtn) showBtn.onclick = showAllCorrectAnswers;\n      if (btnL1) btnL1.onclick = playLetter1;\n      if (btnL2) btnL2.onclick = playLetter2;\n      if (btnQs) btnQs.onclick = playAllQuestions;\n\n      if (toggleReading && wordBox) {\n        toggleReading.onclick = () => {\n          const hidden = wordBox.style.display === \"none\";\n          wordBox.style.display = hidden ? \"block\" : \"none\";\n          toggleReading.textContent = hidden ? \"Hide\" : \"Show\";\n        };\n      }\n    }\n\n    function initialize(){\n      loadVoices();\n      showLetters();\n      renderQuestions();\n      wireUI();\n    }\n\n    document.addEventListener(\"DOMContentLoaded\", initialize);\n  <\/script>\n<\/section>\n\n","protected":false},"excerpt":{"rendered":"<p>This Robot is used for practicing English at level A2. In order to interact with this Robot smoothly, please use<\/p>\n","protected":false},"author":1,"featured_media":195,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_layout":"default_layout","footnotes":""},"categories":[18,5],"tags":[],"class_list":["post-417","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-a2","category-chatbot"],"_links":{"self":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/comments?post=417"}],"version-history":[{"count":4,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/417\/revisions"}],"predecessor-version":[{"id":436,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/417\/revisions\/436"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/media\/195"}],"wp:attachment":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/media?parent=417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/categories?post=417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/tags?post=417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}