{"id":159460,"date":"2026-07-07T11:30:51","date_gmt":"2026-07-07T02:30:51","guid":{"rendered":"https:\/\/support.questetra.com\/?p=159460"},"modified":"2026-08-04T15:19:32","modified_gmt":"2026-08-04T06:19:32","slug":"service-task-google-vertexai-gemini-chat","status":"publish","type":"post","link":"https:\/\/support.questetra.com\/en\/bpmn-icons\/service-task-google-vertexai-gemini-chat\/","title":{"rendered":"Google Vertex AI: Gemini: Chat"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"58\" data-attachment-id=\"113160\" data-permalink=\"https:\/\/support.questetra.com\/en\/developer-blog\/how-to-use-timer-start-event\/attachment\/advanced-banner-new-en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?fit=1200%2C68&amp;ssl=1\" data-orig-size=\"1200,68\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"advanced-banner-new-en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?fit=1024%2C58&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en-1024x58.png?resize=1024%2C58&#038;ssl=1\" alt=\"\" class=\"wp-image-113160\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=1024%2C58&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=600%2C34&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=768%2C44&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?w=1200&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Overview<\/h3>\n\n\n\n<h4 class=\"wp-block-heading has-border-color has-product-main-border-color has-white-color has-product-main-background-color has-text-color has-link-color has-background\" style=\"background-color:#ccffcc;margin-top:var(--wp--preset--spacing--30);margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:var(--wp--preset--spacing--20);padding-bottom:0;padding-left:var(--wp--preset--spacing--20)\"><strong>Google Vertex AI: Gemini: Chat<\/strong><\/h4>\n\n\n\n<p class=\"has-border-color has-product-main-border-color has-text-color has-white-background-color has-link-color has-background mt-0 pt-0 wp-block-paragraph\" style=\"background-color:#f0fff0;margin-top:0;margin-right:0;margin-bottom:var(--wp--preset--spacing--30);margin-left:0;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">This item sends a message to a Gemini model on Google Vertex AI and stores the response in the specified data item.<\/p>\n\n\n\n<figure class=\"wp-block-image alignright has-custom-border is-style-default\"><img decoding=\"async\" src=\"data:image\/png;base64,\n        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABRlJREFUWEfF\n        l3lsFHUUx79vttu9KbFWa4qiIqBChAQVwaDtKkcxxiCXBgFREUy0lIKAbEm20AEaiTTlEKIhAkrk\n        FGKQS7YlYEBUUImVRqIlHlwNSHf2Pp6Z33ZxW3ZmF4T4+28yv\/fe5\/fe+\/7mDeF\/XpRt\/AFuvsVk\n        VIYQaDCYHyTQHQAKVHsmnAfzWYB+AvHeYMT+5WE3XczGd0aAx2vYYYr45jPwJhFysnHKjCiAOn\/U\n        VvW1m1r1bLQBmMm50DcRwGIAt2cTuOMeZpwlYJbHZfsYRJzOhyZAiay8DaCGgIxZ0oNjtUKMCk+l\n        vTYrgNGb2NDyi28NAROu59SaNoza\/B62mZvHUCx1z1Wnc1Yr5SAsvaHBk84Y0ztmoh3AU7IymBm7\n        QZBuEkCcCcPrXfY9Sf9XAIrdbJaMvmathqubYBE2ZesCmmx35hNWvGxF+foAfj0fT7uPgTNBi63b\n        4QoSjq4AOKuVOSAs0vK+scwqXo2t86OTBWhN4ZAIsOQCBgmQx1hQuTmAy36dHKaUIgHATCWy7y8i\n        FGqZrXndCiJg2zdhlA8z4dklPvjDid3yGDN6dzGIwLXjLSIDJ35PnwERDjhTP9dWpEpTABRX+x+T\n        KH5Yr+6vFuciHGXsPRHF9FIT5nwaxODeOTjeHMOj9xnQ5y4DDjVF4R5phntrEAeb2jX7Va7jLA1o\n        qLQeEQBOWVEvm9l6AFWjzIhEGT+cjqG8NJGB7RU27PguggeKDLinQMLkD\/1Qe2XGJwGcbkl776SG\n        qPG47HMEQInsbSDQk3oAi8aaEYkBaw+G8dYQE6avD2DBaDO2HI1gsjMX9xZImLrGj5WTrJi2LoBT\n        57RLkCgDH6h3OYoTANXek0TUUw9g0hO5CMcYFiPhxYFGjK7z4\/1XLNh0JAJfiNGryIDVnhCqRppR\n        tS3YrknT+WXmpvpKx\/1tJfD+DVCeHsBHU6yIxBiHmmKYMMiIEUt9qB1vxZajYQzqmYNeXQyYtSGA\n        FZMyN2EiDl\/2uBydkz0QBGDSAuheKKEwj3ChlXHJz0IF72wMYv9cGxp+jqKhMYo+XQ1YuS+M5\/oZ\n        8cfFOI41xxDTrUIqQLXSDEJXLYAt06zIsxLq9oSEhlKbcM+PUXS2kZDhxFU+vPeSRTRkzechoRit\n        1a4EJbKiyqG\/1uYehRKWjLPAZoKQnXtbEEoQmD\/KLFRw7LcYBvYwYN4IM4wGoL4xCnl7SGXVBmjX\n        hLJ3FYGm6PWA6njxC2b07WoQwWduCECV5tajEXS7TcLQh3KEShbtCOLASf07oE0Fq+tdjqmJi2iB\n        MkySsEsPIPnu+UeMeOPpXHErqie\/u0BCvp3w5yUW8rvky6h\/4SoeR2nDPPtuAVBax6aQVzmXSQlJ\n        CPWjo+rdH2LkOwg7j0exdFcoG\/42AXDr2ai9oNFN4X8\/RlnchqkRhvfNwYzhJrR4GWOX6X150nKJ\n        W1B9cwWgv5s7WY3KKQKJSTebpfaFWvdrWQy+EM6xd\/tqNnnbAagPJbIylBhf3MyBhAjD9rvs+5LQ\n        6UYy3bngWk571d5MI1nSwCl7PwDotf8UrIMxg4XsOvrUHLmLZWUGAe\/emLGcyzyVjuXpDqQ78zur\n        \/SOA+DIQiq4nGww0E0sVnkrrZ1r2GX86+q1mY16LbxwYZUzomykjbT8i3zPR8lu7W9d2\/A\/IugTp\n        iAct9BYYmZ5h0MNAvDcYvdqk1MgknSDwtxHinQfnOi5km7GMGcjW0fXu+web2gY\/ELMpSwAAAABJ\n        RU5ErkJggg==\n    \" alt=\"Auto Step icon\" class=\"has-border-color has-ast-global-color-4-border-color\" style=\"border-width:0.5em\"\/><\/figure>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details open><summary class=\"wp-block-coblocks-accordion-item__title\">Basic Configs<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<dl style=\"0 0 -0.7em 0\">\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\"><\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">Step Name<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\"><\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">Note<\/dd>\n<\/dl>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details open><summary class=\"wp-block-coblocks-accordion-item__title\">Configs for this Auto Step<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<dl style=\"0 0 -0.7em 0\">\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Auth<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C1: Service Account Setting<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Region<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C2: Region (a region code or &#8216;global&#8217;)<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_ProjectId<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C3: Project ID<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Model<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C4: Model<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_ThinkingLevel<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C5: Thinking Level (Only for Gemini 3 and later series)<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_MaxTokens<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C6: Maximum number of tokens for generating response<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Temperature<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C7: Temperature (0.0 &#8211; 2.0)<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_StopSequences<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C8: Stop Sequences (write one per line, up to five)<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Message1<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">U1: User Message<span style=\"color:#990000;\"> *<\/span><span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Images1<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">I1: Files to attach to user message<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Images1Resolution<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">I1-R: Resolution of the attached files<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Thought1<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">T1: Data item to save summary of thought<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Answer1<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">A1: Data item to save response<span style=\"color:#990000;\"> *<\/span><\/dd>\n\n<\/dl>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--30)\"><span>Notes<\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To set up [C1: Service Account Setting] :\n<ol class=\"wp-block-list\">\n<li>Prepare a <a href=\"https:\/\/cloud.google.com\/iam\/docs\/service-account-overview?hl=en\" target=\"_blank\" rel=\"noreferrer noopener\">service account<\/a> on Google Cloud Console\n<ul class=\"wp-block-list\">\n<li>Role [Vertex AI User] is required<\/li>\n\n\n\n<li>Create or upload a <a href=\"https:\/\/cloud.google.com\/iam\/docs\/service-account-creds?hl=en#key-types\" target=\"_blank\" rel=\"noreferrer noopener\">service account key<\/a>\n<ul class=\"wp-block-list\">\n<li>If you <a href=\"https:\/\/cloud.google.com\/iam\/docs\/keys-create-delete?hl=en#creating\" target=\"_blank\" rel=\"noreferrer noopener\">create a service account key on Google Cloud Console<\/a>, you can download a JSON file including necessary information<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Create an OAuth2 JWT Bearer setting on Questetra BPM Suite and set it to C1\n<ul class=\"wp-block-list\">\n<li>Scope <code>https:\/\/www.googleapis.com\/auth\/cloud-platform<\/code> is required<\/li>\n\n\n\n<li>Set up other items as shown in the table below :<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><strong>Settings on Questetra BPM Suite<\/strong><\/th><th><strong>Corresponding Information <\/strong><br><strong>of Google Cloud Service Account Key<\/strong><\/th><th><strong>Property Name in JSON<\/strong> File<\/th><th><strong>Required or Not<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Client ID<\/td><td>OAuth2 Client ID<\/td><td>client_id<\/td><td>Not Required<\/td><\/tr><tr><td>Private Key ID<\/td><td>Key ID<\/td><td>private_key_id<\/td><td>Required<\/td><\/tr><tr><td>Private Key<\/td><td>Private Key<\/td><td>private_key<\/td><td>Required<\/td><\/tr><tr><td>Custom Secret Information 1<\/td><td>Email Address<\/td><td>client_email<\/td><td>Required<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1108\" height=\"660\" data-attachment-id=\"159564\" data-permalink=\"https:\/\/support.questetra.com\/en\/bpmn-icons\/service-task-google-vertexai-gemini-chat\/attachment\/google-vertexai-auth-setting_capture_en-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-vertexai-auth-setting_capture_en-1.png?fit=1108%2C660&amp;ssl=1\" data-orig-size=\"1108,660\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"google-vertexai-auth-setting_capture_en-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-vertexai-auth-setting_capture_en-1.png?fit=1024%2C610&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-vertexai-auth-setting_capture_en-1.png?resize=1108%2C660&#038;ssl=1\" alt=\"\" class=\"wp-image-159564\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-vertexai-auth-setting_capture_en-1.png?w=1108&amp;ssl=1 1108w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-vertexai-auth-setting_capture_en-1.png?resize=529%2C315&amp;ssl=1 529w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-vertexai-auth-setting_capture_en-1.png?resize=1024%2C610&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-vertexai-auth-setting_capture_en-1.png?resize=768%2C457&amp;ssl=1 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In [C4: Model], if you want to use a model that is not listed in the pull-down menu, select \u201cFixed Value\u201d and enter the model code in the input field\n<ul class=\"wp-block-list\">\n<li>Model codes should be written according to <a href=\"https:\/\/ai.google.dev\/gemini-api\/docs\/models?hl=en\" target=\"_blank\" rel=\"noopener\">Gemini API documentation<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--30)\"><span>See also<\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/support.questetra.com\/en\/bpmn-icons\/intermediate-error-catch-event-boundary-type\/\" target=\"_blank\" rel=\"noreferrer noopener\">Intermediate Error Catch Event (Boundary Type)<\/a><\/li>\n<\/ul>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Script (click to open)<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<ul class=\"wp-block-list\">\n<li>An XML file that contains the code below is available to download\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/gh-cdn.questetra.net\/Questetra\/Addon-XML\/release-2026-06-03\/google-vertexai-gemini-chat.xml\" target=\"_blank\" rel=\"noreferrer noopener\">google-vertexai-gemini-chat.xml<\/a> (C) Questetra, Inc. (MIT License)<\/li>\n\n\n\n<li>If you are using Professional, you can modify the contents of this file and use it as your own add-on auto step<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>\n\nconst MAX_IMAGE_SIZE = 20971520; \/\/ Gemini \u306e\u30a4\u30f3\u30e9\u30a4\u30f3\u30d5\u30a1\u30a4\u30eb\u306e\u5236\u9650\u30021 \u30d5\u30a1\u30a4\u30eb\u306b\u3064\u304d 20 MB \u307e\u3067\n\nconst main = () =&gt; {\n    \/\/\/\/\/\/ == \u5de5\u7a0b\u30b3\u30f3\u30d5\u30a3\u30b0\u30fb\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30c7\u30fc\u30bf\u306e\u53c2\u7167 \/ Config & Data Retrieving ==\n    const auth = configs.getObject(&#39;conf_Auth&#39;);\n\n    const region = retrieveRegion();\n    const projectId = configs.get(&#39;conf_ProjectId&#39;);\n    const model = retrieveModel();\n    const maxTokens = retrieveMaxTokens();\n    const thinkingLevel = configs.get(&#39;conf_ThinkingLevel&#39;);\n    const temperature = retrieveTemperature();\n    const stopSequences = retrieveStopSequences();\n    const message = configs.get(&#39;conf_Message1&#39;);\n    if (message === &#39;&#39;) {\n        throw new Error(&#39;User Message is empty.&#39;);\n    }\n    const inlineImages = retrieveImages();\n    const mediaResolution = configs.get(&#39;conf_Images1Resolution&#39;);\n\n    \/\/\/\/\/\/ == \u6f14\u7b97 \/ Calculating ==\n    const {answer, thought} = invokeModel(\n        auth,\n        region,\n        projectId,\n        model,\n        maxTokens,\n        thinkingLevel,\n        temperature,\n        stopSequences,\n        message,\n        inlineImages,\n        mediaResolution\n    );\n\n    \/\/\/\/\/\/ == \u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30c7\u30fc\u30bf\u3078\u306e\u4ee3\u5165 \/ Data Updating ==\n    saveData(&#39;conf_Answer1&#39;, answer);\n    saveData(&#39;conf_Thought1&#39;, thought);\n};\n\n\/**\n * config \u304b\u3089\u30ea\u30fc\u30b8\u30e7\u30f3\u30b3\u30fc\u30c9\u3092\u8aad\u307f\u51fa\u3059\n * \u30ea\u30fc\u30b8\u30e7\u30f3\u30b3\u30fc\u30c9\u306e\u5f62\u5f0f\u3068\u3057\u3066\u4e0d\u6b63\u306a\u5834\u5408\u306f\u30a8\u30e9\u30fc\n * @return {String}\n *\/\nconst retrieveRegion = () =&gt; {\n    const region = configs.get(&#39;conf_Region&#39;);\n    \/\/ \u4eca\u5f8c\u30ea\u30fc\u30b8\u30e7\u30f3\u304c\u5897\u3048\u308b\u3053\u3068\u3082\u8003\u3048\u3066\u3001\u6587\u5b57\u6570\u306b\u306f\u4f59\u88d5\u3092\u307f\u3066\u3044\u308b\n    const reg = new RegExp(&#39;^(?:global|[a-z]{2,20}-[a-z]{2,20}[1-9]{1,2})$&#39;);\n    if (!reg.test(region)) {\n        throw new Error(&#39;Region Code is invalid.&#39;);\n    }\n    return region;\n};\n\n\/**\n * config \u304b\u3089\u30e2\u30c7\u30eb ID \u3092\u8aad\u307f\u51fa\u3059\n * \u30e2\u30c7\u30eb ID \u3068\u3057\u3066\u4e0d\u6b63\u306a\u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u30a8\u30e9\u30fc\n * @return {String}\n *\/\nconst retrieveModel = () =&gt; {\n    const model = configs.get(&#39;conf_Model&#39;);\n    const reg = new RegExp(&#39;^[a-z0-9.-]+$&#39;);\n    if (!reg.test(model)) {\n        throw new Error(&#39;Model includes an invalid character.&#39;);\n    }\n    return model;\n};\n\n\/**\n * config \u304b\u3089\u6700\u5927\u51fa\u529b\u30c8\u30fc\u30af\u30f3\u6570\u3092\u8aad\u307f\u51fa\u3059\n * \u6b63\u306e\u6574\u6570\u3067\u306a\u3044\u5834\u5408\u3001\u30a8\u30e9\u30fc\n * \u672a\u5b9a\u7fa9\u306e\u5834\u5408\u3001null \u3092\u8fd4\u3059\n * @returns {Number}\n *\/\nconst retrieveMaxTokens = () =&gt; {\n    const maxTokens = configs.get(&#39;conf_MaxTokens&#39;);\n    if (maxTokens === &#39;&#39;) {\n        return null;\n    }\n    const regExp = new RegExp(\/^[1-9][0-9]*$\/);\n    if (!regExp.test(maxTokens)) {\n        throw new Error(&#39;Maximum number of tokens for generating output must be a positive integer.&#39;);\n    }\n    return parseInt(maxTokens, 10);\n};\n\n\/**\n * config \u304b\u3089\u6e29\u5ea6\u3092\u8aad\u307f\u51fa\u3059\n * \u672a\u5b9a\u7fa9\u306e\u5834\u5408\u3001null \u3092\u8fd4\u3059\n * @returns {Number}\n *\/\nconst retrieveTemperature = () =&gt; {\n    const temperature = configs.get(&#39;conf_Temperature&#39;);\n    if (temperature === &#39;&#39;) {\n        return null;\n    }\n    const regExp = \/^([0-1](\\.\\d+)?|2(\\.0+)?)$\/;\n    if (!regExp.test(temperature)) {\n        throw new Error(&#39;Temperature must be a number from 0 to 2.&#39;);\n    }\n    return parseFloat(temperature);\n};\n\n\/**\n * config \u304b\u3089\u505c\u6b62\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u8aad\u307f\u51fa\u3059\n * @returns {Array&lt;String&gt;}\n *\/\nconst retrieveStopSequences = () =&gt; {\n    const stopSequencesStr = configs.get(&#39;conf_StopSequences&#39;);\n    if (stopSequencesStr === &#39;&#39;) {\n        return [];\n    }\n    const stopSequences = stopSequencesStr.split(&#39;\\n&#39;).filter((s) =&gt; s !== &#39;&#39;);\n    if (stopSequences.length &gt; 5) {\n        throw new Error(&#39;Too many stop sequences. The maximum number is 5.&#39;);\n    }\n    return stopSequences;\n};\n\n\/**\n * config \u304b\u3089\u753b\u50cf\u30fb\u52d5\u753b\u3092\u8aad\u307f\u51fa\u3059\n * \u4ee5\u4e0b\u306e\u5834\u5408\u306f\u30a8\u30e9\u30fc\n * - \u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u306e\u7dcf\u6570\u304c\u591a\u3059\u304e\u308b\u5834\u5408\n * - \u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u304c\u5927\u304d\u3059\u304e\u308b\u5834\u5408\n * - \u753b\u50cf\u3067\u3082\u52d5\u753b\u3067\u3082\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u304c\u6dfb\u4ed8\u3055\u308c\u3066\u3044\u308b\u5834\u5408\n * @returns {Array&lt;Object&gt;} \u30a4\u30f3\u30e9\u30a4\u30f3\u753b\u50cf\u30fb\u52d5\u753b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u914d\u5217\n *\/\nconst retrieveImages = () =&gt; {\n    const imagesDef = configs.getObject(&#39;conf_Images1&#39;);\n    if (imagesDef === null) {\n        return [];\n    }\n    const images = engine.findData(imagesDef);\n    if (images === null) {\n        return [];\n    }\n    const inlineImages = [];\n    images.forEach((image) =&gt; {\n        if (image.getLength() &gt; MAX_IMAGE_SIZE) {\n            throw new Error(\n                `Attached file &quot;${image.getName()}&quot; is too large. Each file must be less than ${MAX_IMAGE_SIZE} bytes.`\n            );\n        }\n        let contentType = image.getContentType();\n        if (\n            !contentType.startsWith(&#39;image\/&#39;) &&\n            !contentType.startsWith(&#39;video\/&#39;) &&\n            !contentType.startsWith(&#39;audio\/&#39;) &&\n            !contentType.startsWith(&#39;application\/pdf&#39;) &&\n            !contentType.startsWith(&#39;text\/&#39;)\n        ) {\n            throw new Error(\n                `Attached file &quot;${image.getName()}&quot; is neither an image, video, audio, PDF, nor text.`\n            );\n        }\n        if (contentType.startsWith(&#39;text\/&#39;)) {\n            \/\/ text\/plain \u306b\u66f8\u304d\u63db\u3048\n            contentType = contentType.replace(\/^text\\\/[^;]+\/, &#39;text\/plain&#39;);\n        }\n        const inlineImage = {\n            mimeType: contentType,\n            data: base64.encodeToString(fileRepository.readFile(image)),\n        };\n        inlineImages.push(inlineImage);\n    });\n    return inlineImages;\n};\n\nconst SCOPE = &#39;https:\/\/www.googleapis.com\/auth\/cloud-platform&#39;;\nconst URL_TOKEN_REQUEST = &#39;https:\/\/oauth2.googleapis.com\/token&#39;;\n\n\/**\n * @param auth HTTP \u8a8d\u8a3c\u8a2d\u5b9a\n * @returns {any} \u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u542b\u3080\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\n *\/\nconst getAccessToken = (auth) =&gt; {\n    const privateKeyId = auth.getPrivateKeyId();\n    const privateKey = auth.getPrivateKey();\n    const serviceAccount = auth.getCustomSecret1();\n    const scope = auth.getScope();\n    if (scope === null || !scope.split(&#39; &#39;).includes(SCOPE)) {\n        throw new Error(`Scope ${SCOPE} must be included in the scope.`);\n    }\n    if (privateKeyId === &#39;&#39;) {\n        throw new Error(&#39;Private Key ID is required.&#39;);\n    }\n    if (privateKey === &#39;&#39;) {\n        throw new Error(&#39;Private Key is required.&#39;);\n    }\n    if (serviceAccount === &#39;&#39;) {\n        throw new Error(&#39;Service Account must be set to Custom Secret 1.&#39;);\n    }\n    const header = {\n        alg: &#39;RS256&#39;,\n        typ: &#39;at+jwt&#39;,\n        kid: privateKeyId,\n    };\n    const now = Math.floor(Date.now() \/ 1000);\n    const payload = {\n        iss: serviceAccount,\n        aud: URL_TOKEN_REQUEST,\n        sub: &#39;&#39;,\n        iat: now,\n        exp: now + 3600,\n        \/**\n         * https:\/\/developers.google.com\/identity\/protocols\/oauth2\/service-account#jwt-auth\n         * &quot;without OAuth&quot; \u306e\u8a71\u3060\u304c\u3001OAuth \u3067\u3082 1 hour \u306b\u306a\u308b\u3088\u3046\u3060\u3002\n         * 1 hour \u3088\u308a\u9577\u3051\u308c\u3070\u30a8\u30e9\u30fc\u3002\u77ed\u3051\u308c\u3070\u30011 hour \u306e\u30c8\u30fc\u30af\u30f3\u304c\u8fd4\u3063\u3066\u304f\u308b\u3002\n         *\/\n        scope,\n    };\n    const keyB = rsa.readKeyFromPkcs8(privateKey);\n    const assertion = jwt.build(header, payload, keyB);\n\n    const response = httpClient\n        .begin()\n        .formParam(&#39;grant_type&#39;, &#39;urn:ietf:params:oauth:grant-type:jwt-bearer&#39;)\n        .formParam(&#39;assertion&#39;, assertion)\n        .post(URL_TOKEN_REQUEST);\n    const responseText = response.getResponseAsString();\n    if (response.getStatusCode() !== 200) {\n        engine.log(responseText);\n        throw new Error(`Failed to get Access token. status: ${response.getStatusCode()}`);\n    }\n    const result = JSON.parse(response.getResponseAsString());\n    if (result.access_token === undefined) {\n        engine.log(responseText);\n        throw new Error(`Failed to get Access token. access token not found.`);\n    }\n    return result;\n};\n\n\/**\n * \u30e2\u30c7\u30eb\u306e\u5b9f\u884c\n * @param region\n * @param projectId\n * @param model\n * @param maxTokens\n * @param thinkingLevel\n * @param temperature\n * @param stopSequences\n * @param message\n * @param inlineImages\n * @param mediaResolution\n * @returns {String, String} answer, thought\n *\/\nconst invokeModel = (\n    auth,\n    region,\n    projectId,\n    model,\n    maxTokens,\n    thinkingLevel,\n    temperature,\n    stopSequences,\n    message,\n    inlineImages,\n    mediaResolution\n) =&gt; {\n    let domain = &#39;aiplatform.googleapis.com&#39;;\n    if (region !== &#39;global&#39;) {\n        domain = `${region}-${domain}`;\n    }\n    const URL = `https:\/\/${domain}\/v1\/projects\/${projectId}\/locations\/${region}\/publishers\/google\/models\/${model}:streamGenerateContent`;\n\n    const generationConfig = {};\n    if (maxTokens !== null) {\n        generationConfig.maxOutputTokens = maxTokens;\n    }\n    if (temperature !== null) {\n        generationConfig.temperature = temperature;\n    }\n    generationConfig.stopSequences = stopSequences;\n    if (mediaResolution !== &#39;&#39;) {\n        generationConfig.mediaResolution = mediaResolution;\n    }\n\n    const thinkingConfig = {};\n    if (configs.getObject(&#39;conf_Thought1&#39;) !== null) {\n        thinkingConfig.includeThoughts = true;\n    }\n    if (thinkingLevel !== &#39;&#39;) {\n        thinkingConfig.thinkingLevel = thinkingLevel;\n    }\n    if (Object.keys(thinkingConfig).length &gt; 0) {\n        generationConfig.thinkingConfig = thinkingConfig;\n    }\n\n    const payload = {\n        contents: {\n            role: &#39;user&#39;,\n            parts: [\n                {\n                    text: message,\n                },\n            ],\n        },\n        safetySettings: {\n            category: &#39;HARM_CATEGORY_SEXUALLY_EXPLICIT&#39;,\n            threshold: &#39;BLOCK_LOW_AND_ABOVE&#39;,\n        },\n        generationConfig,\n    };\n    inlineImages.forEach((inlineImage) =&gt; {\n        payload.contents.parts.push({\n            inlineData: inlineImage,\n        });\n    });\n\n    const response = httpClient\n        .begin()\n        .oauth2JwtBearer(auth, () =&gt; getAccessToken(auth))\n        .body(JSON.stringify(payload), &#39;application\/json&#39;)\n        .post(URL);\n\n    const status = response.getStatusCode();\n    const respTxt = response.getResponseAsString();\n    if (status !== 200) {\n        engine.log(respTxt);\n        throw new Error(`Failed to invoke model. status: ${status}`);\n    }\n    const json = JSON.parse(respTxt);\n    const answers = [];\n    const thoughts = [];\n\n    for (const { candidates, usageMetadata } of json) {\n        \/\/ finishReason \u3068\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u30ed\u30b0\u51fa\u529b\n        const finishReason = candidates[0].finishReason;\n        if (finishReason !== undefined) {\n            engine.log(`Finish Reason: ${finishReason}`);\n        }\n        if (usageMetadata !== undefined) {\n            if (usageMetadata.promptTokenCount !== undefined) {\n                engine.log(`Prompt Token Count: ${usageMetadata.promptTokenCount}`);\n            }\n            if (usageMetadata.thoughtsTokenCount !== undefined) {\n                engine.log(`Thoughts Token Count: ${usageMetadata.thoughtsTokenCount}`);\n            }\n            if (usageMetadata.candidatesTokenCount !== undefined) {\n                engine.log(`Candidates Token Count: ${usageMetadata.candidatesTokenCount}`);\n            }\n            if (usageMetadata.totalTokenCount !== undefined) {\n                engine.log(`Total Token Count: ${usageMetadata.totalTokenCount}`);\n            }\n        }\n\n        \/\/ \u56de\u7b54\u672c\u6587\u3068\u601d\u8003\u306e\u8981\u7d04\u3092\u53d6\u5f97\n        if (candidates[0].content === undefined || candidates[0].content.parts === undefined) {\n            engine.log(&#39;No content in the candidate.&#39;);\n        } else {\n            for (const part of candidates[0].content.parts) {\n                if (part.text === undefined) {\n                    continue;\n                } else if (part.thought) {\n                    thoughts.push(part.text);\n                } else {\n                    answers.push(part.text);\n                }\n            }\n        }\n    }\n\n    if (answers.length === 0 || answers.join(&#39;&#39;) === &#39;&#39;) {\n        throw new Error(`No response content generated.`);\n    }\n    const result = {\n        answer: answers.join(&#39;&#39;)\n    };\n    if (thoughts.length !== 0 && thoughts.join(&#39;&#39;) !== &#39;&#39;) {\n        result.thought = thoughts.join(&#39;&#39;);\n    }\n    return result;\n};\n\n\/**\n * \u30c7\u30fc\u30bf\u9805\u76ee\u3078\u306e\u4fdd\u5b58\n * @param configName\n * @param data\n *\/\nconst saveData = (configName, data) =&gt; {\n    const def = configs.getObject(configName);\n    if (def === null) {\n        return;\n    }\n    if (data === undefined) {\n        engine.setData(def, null);\n    }\n    engine.setData(def, data);\n};\n\n\n<\/code><\/pre><\/div>\n<\/div><\/details><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This item sends a message to a Gemini model on Google Vertex AI and stores the response in the specified data item.<\/p>\n","protected":false},"author":17,"featured_media":159805,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_uag_custom_page_level_css":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[551],"tags":[],"faq_section":[],"class_list":["post-159460","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bpmn-icons"],"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?fit=1200%2C675&ssl=1",1200,675,false],"thumbnail":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=440%2C440&ssl=1",440,440,true],"medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?fit=560%2C315&ssl=1",560,315,true],"medium_large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?fit=768%2C432&ssl=1",768,432,true],"large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?fit=1024%2C576&ssl=1",1024,576,true],"1536x1536":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?fit=1200%2C675&ssl=1",1200,675,true],"2048x2048":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?fit=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-portrait-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=900%2C675&ssl=1",900,675,true],"newspack-article-block-square-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=800%2C600&ssl=1",800,600,true],"newspack-article-block-portrait-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=600%2C675&ssl=1",600,675,true],"newspack-article-block-square-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=800%2C675&ssl=1",800,675,true],"newspack-article-block-landscape-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=600%2C450&ssl=1",600,450,true],"newspack-article-block-portrait-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=450%2C600&ssl=1",450,600,true],"newspack-article-block-square-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=600%2C600&ssl=1",600,600,true],"newspack-article-block-landscape-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=400%2C300&ssl=1",400,300,true],"newspack-article-block-portrait-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=300%2C400&ssl=1",300,400,true],"newspack-article-block-square-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=400%2C400&ssl=1",400,400,true],"newspack-article-block-landscape-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=200%2C150&ssl=1",200,150,true],"newspack-article-block-portrait-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=150%2C200&ssl=1",150,200,true],"newspack-article-block-square-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?resize=200%2C200&ssl=1",200,200,true],"newspack-article-block-uncropped":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?fit=1200%2C675&ssl=1",1200,675,true]},"uagb_author_info":{"display_name":"Shiho Tatsumi","author_link":"https:\/\/support.questetra.com\/en\/author\/tatsumi48c607ec82\/"},"uagb_comment_info":2,"uagb_excerpt":"This item sends a message to a Gemini model on Google Vertex AI and stores the response in the specified data item.","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9DiIh-FtW","jetpack-related-posts":[{"id":175598,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/ai-service-comparison\/","url_meta":{"origin":159460,"position":0},"title":"Comparison and Utilization Guide for Generative AI Automation Items","author":"komatsuquestetra","date":"2025-09-08","format":false,"excerpt":"We will explain the features of AI Auto-steps and how to use them.","rel":"","context":"In &quot;Questetra Developers Blog&quot;","block_context":{"text":"Questetra Developers Blog","link":"https:\/\/support.questetra.com\/en\/category\/developer-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/08\/ai-service-comparison-v2.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/08\/ai-service-comparison-v2.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/08\/ai-service-comparison-v2.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/08\/ai-service-comparison-v2.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/08\/ai-service-comparison-v2.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":165737,"url":"https:\/\/support.questetra.com\/en\/templates\/translation-request-20240726\/","url_meta":{"origin":159460,"position":1},"title":"Translation Process, ChatGPT\/Gemini Integration","author":"Tsuyoshi Kusaka","date":"2024-09-05","format":false,"excerpt":"This is the process of requesting a translation (Japanese to English) of a specified text. ChatGPT\/Gemini will automatically generate a translation proposal for the draft entered by the requester. The translator will complete the translation using the translation proposal created by ChatGPT\/Gemini as a reference.","rel":"","context":"In &quot;Workflow Apps&quot;","block_context":{"text":"Workflow Apps","link":"https:\/\/support.questetra.com\/en\/category\/templates\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/09\/eyecatch-translation-request-20240726-en.png?fit=960%2C540&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/09\/eyecatch-translation-request-20240726-en.png?fit=960%2C540&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/09\/eyecatch-translation-request-20240726-en.png?fit=960%2C540&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/09\/eyecatch-translation-request-20240726-en.png?fit=960%2C540&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":183010,"url":"https:\/\/support.questetra.com\/en\/versions\/version-180\/","url_meta":{"origin":159460,"position":2},"title":"Version 18.0: Renamed &#8220;Process&#8221; to &#8220;Case&#8221; and Expanded Markdown Support","author":"komatsuquestetra","date":"2026-04-20","format":false,"excerpt":"In Ver. 18.0, \"Process\" was renamed to \"Case,\" and the main screen was converted to a Single Page Application (SPA). After task completion, you will be redirected to the case details screen.","rel":"","context":"In &quot;Version Info&quot;","block_context":{"text":"Version Info","link":"https:\/\/support.questetra.com\/en\/category\/versions\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/F-image180E-2.png?fit=1200%2C664&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/F-image180E-2.png?fit=1200%2C664&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/F-image180E-2.png?fit=1200%2C664&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/F-image180E-2.png?fit=1200%2C664&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/F-image180E-2.png?fit=1200%2C664&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":159755,"url":"https:\/\/support.questetra.com\/en\/versions\/version-160\/","url_meta":{"origin":159460,"position":3},"title":"2024-04-14 Ver 16.0 Enhanced Security Concerning Logging In","author":"Hirotaka NISHI","date":"2024-04-08","format":false,"excerpt":"Security regarding login and passwords is strengthened. Additionally, an automatic step that works with Google Vertex AI is added, allowing you to use the generating AI Gemini. Several automated steps that integrate with Microsoft 365 and WordPress.com are also added.","rel":"","context":"In &quot;Version Info&quot;","block_context":{"text":"Version Info","link":"https:\/\/support.questetra.com\/en\/category\/versions\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/version-160-fi-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/version-160-fi-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/version-160-fi-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/version-160-fi-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/version-160-fi-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":163833,"url":"https:\/\/support.questetra.com\/en\/versions\/version-161\/","url_meta":{"origin":159460,"position":4},"title":"2024-08-18 Ver. 16.1 Published Forms Support Multiple Languages","author":"Hirotaka NISHI","date":"2024-07-29","format":false,"excerpt":"You will now be able to specify the language for buttons and messages on the public form. In addition, Timer Start Events and HTTP reception processes have been improved. Input checks for Date\/Datetime-types and initial value settings for User\/Organization-types have also been improved.","rel":"","context":"In &quot;Version Info&quot;","block_context":{"text":"Version Info","link":"https:\/\/support.questetra.com\/en\/category\/versions\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/07\/version-161-fi-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/07\/version-161-fi-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/07\/version-161-fi-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/07\/version-161-fi-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/07\/version-161-fi-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":175363,"url":"https:\/\/support.questetra.com\/en\/versions\/version-171\/","url_meta":{"origin":159460,"position":5},"title":"2025-08-17 Ver.17.1 Enhanced Chat Feature","author":"Tomoatsu Horibe","date":"2025-08-08","format":false,"excerpt":"The chat feature has been enhanced, allowing for searches across all channels and mentioning organizations outside of organization channels. Additionally, CSV Data Update now supports saving to Numeric-type data, and various input and output options have been added. Security has also been strengthened, with support for detecting unauthorized login attempts.","rel":"","context":"In &quot;Version Info&quot;","block_context":{"text":"Version Info","link":"https:\/\/support.questetra.com\/en\/category\/versions\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/08\/version171_eyecatch_en_v1.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/08\/version171_eyecatch_en_v1.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/08\/version171_eyecatch_en_v1.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/08\/version171_eyecatch_en_v1.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/08\/version171_eyecatch_en_v1.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/bpmn-icon-service-task-google-vertex-ai-1200x675-1.png?fit=1200%2C675&ssl=1","_links":{"self":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/159460","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/comments?post=159460"}],"version-history":[{"count":33,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/159460\/revisions"}],"predecessor-version":[{"id":192239,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/159460\/revisions\/192239"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media\/159805"}],"wp:attachment":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media?parent=159460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/categories?post=159460"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/tags?post=159460"},{"taxonomy":"faq_section","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/faq_section?post=159460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}