{"id":15,"date":"2026-10-19T19:26:50","date_gmt":"2026-10-19T15:56:50","guid":{"rendered":"https:\/\/meetplan.ir\/?page_id=15"},"modified":"2026-10-20T19:27:35","modified_gmt":"2026-10-20T15:57:35","slug":"%d8%aa%d8%a8%d8%af%db%8c%d9%84-%d8%b5%d9%88%d8%aa-%d8%a8%d9%87-%d9%85%d8%aa%d9%86","status":"publish","type":"page","link":"https:\/\/meetplan.ir\/?page_id=15","title":{"rendered":"\u062a\u0628\u062f\u06cc\u0644 \u0635\u0648\u062a \u0628\u0647 \u0645\u062a\u0646"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"15\" class=\"elementor elementor-15\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1726026 e-con e-atomic-element e-flexbox-base e-default-div e-5b5f864 \" data-id=\"1726026\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"1726026\" data-e-type=\"e-flexbox\" data-id=\"1726026\">\n    \t\t\t<h2 data-interaction-id=\"f68344e\" class=\"e-heading-base e-default-h2\" data-e-type=\"widget\" data-id=\"f68344e\">\u0635\u062f\u0627\u062a \u0631\u0648 \u0628\u0647 \u0645\u062a\u0646 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646<\/h2>\n\t\t\t\t\t<p class=\"e-paragraph-base e-default-p\" data-interaction-id=\"e1694e6\" data-e-type=\"widget\" data-id=\"e1694e6\">\u0641\u0627\u06cc\u0644 \u0635\u0648\u062a\u06cc \u0645\u0635\u0627\u062d\u0628\u0647\u060c \u062c\u0644\u0633\u0647 \u06cc\u0627 \u0633\u062e\u0646\u0631\u0627\u0646\u06cc\u200c\u0627\u062a \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646 \u0648 \u0645\u062a\u0646 \u0622\u0646 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646.<\/p>\n\t\t<div class=\"elementor-element elementor-element-9204b93 e-con e-atomic-element e-flexbox-base e-default-div e-9204b93-7528ea3 \" data-id=\"9204b93\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"9204b93\" data-e-type=\"e-flexbox\" data-id=\"9204b93\">\n    \t\t<div class=\"elementor-element elementor-element-f1b965e elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"f1b965e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-copy\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<h2 data-interaction-id=\"8af372f\" class=\"e-heading-base e-default-h2\" data-e-type=\"widget\" data-id=\"8af372f\">\u0641\u0627\u06cc\u0644 \u0635\u0648\u062a\u06cc\u200c\u0627\u062a \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646<\/h2>\n\t\t\t\t\t<p class=\"e-paragraph-base e-default-p\" data-interaction-id=\"7a575d9\" data-e-type=\"widget\" data-id=\"7a575d9\">\u0645\u0635\u0627\u062d\u0628\u0647\u060c \u062c\u0644\u0633\u0647 \u06cc\u0627 \u0633\u062e\u0646\u0631\u0627\u0646\u06cc\u061b \u0645\u062a\u0646 \u0641\u0627\u0631\u0633\u06cc \u0631\u0627 \u0628\u0647\u200c\u0633\u0627\u062f\u06af\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646.<\/p>\n\t\t\t\t<div class=\"elementor-element elementor-element-c1b813d elementor-widget elementor-widget-shortcode\" data-id=\"c1b813d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <div id=\"Meetplan-transcriber-1\" dir=\"rtl\"\n         style=\"font-family:inherit;text-align:center;width:100%;\">\n\n        <input type=\"file\" class=\"Meetplan-audio-file\"\n               accept=\".mp3,.wav,.m4a,.mp4,.mpeg,.mpga,.webm,audio\/mpeg,audio\/wav,audio\/mp4,audio\/webm\"\n               hidden>\n\n        <button type=\"button\" class=\"Meetplan-select\"\n                style=\"border:0;border-radius:10px;padding:13px 28px;background:#242424;color:#fff;font:inherit;cursor:pointer;\">\n            \u0627\u0646\u062a\u062e\u0627\u0628 \u0641\u0627\u06cc\u0644 \u0635\u0648\u062a\u06cc\n        <\/button>\n\n        <div class=\"Meetplan-file-info\" aria-live=\"polite\"\n             style=\"margin-top:14px;line-height:1.9;\">\n            \u0647\u0646\u0648\u0632 \u0641\u0627\u06cc\u0644\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.\n        <\/div>\n\n        <button type=\"button\" class=\"Meetplan-transcribe\"\n                disabled\n                style=\"display:none;margin-top:16px;border:0;border-radius:10px;padding:13px 28px;background:#176b45;color:#fff;font:inherit;cursor:pointer;\">\n            \u062a\u0628\u062f\u06cc\u0644 \u0635\u0648\u062a \u0628\u0647 \u0645\u062a\u0646\n        <\/button>\n\n        <div class=\"Meetplan-status\" role=\"status\" aria-live=\"polite\"\n             style=\"margin-top:18px;line-height:2;text-align:right;overflow-wrap:anywhere;\">\n        <\/div>\n    <\/div>\n\n    <script>\n    (function () {\n        const root = document.getElementById(\n            \"Meetplan-transcriber-1\"        );\n\n        if (!root || root.dataset.initialized === '1') return;\n        root.dataset.initialized = '1';\n\n        const input            = root.querySelector('.Meetplan-audio-file');\n        const selectButton     = root.querySelector('.Meetplan-select');\n        const transcribeButton = root.querySelector('.Meetplan-transcribe');\n        const fileInfo         = root.querySelector('.Meetplan-file-info');\n        const status           = root.querySelector('.Meetplan-status');\n\n        const ajaxUrl = \"https:\\\/\\\/meetplan.ir\\\/wp-admin\\\/admin-ajax.php\";\n        const nonce   = \"1a73bce5ea\";\n        const maxSize = 25 * 1024 * 1024;\n\n        selectButton.addEventListener('click', function () {\n            input.click();\n        });\n\n        input.addEventListener('change', function () {\n            const file = input.files && input.files[0];\n\n            status.textContent = '';\n            transcribeButton.disabled = !file;\n            transcribeButton.style.display = file ? 'inline-block' : 'none';\n\n            if (!file) {\n                fileInfo.textContent = '\u0647\u0646\u0648\u0632 \u0641\u0627\u06cc\u0644\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.';\n                return;\n            }\n\n            fileInfo.textContent =\n                '\u0641\u0627\u06cc\u0644 \u0627\u0646\u062a\u062e\u0627\u0628\u200c\u0634\u062f\u0647: ' + file.name +\n                ' | \u062d\u062c\u0645: ' + (file.size \/ (1024 * 1024)).toFixed(2) +\n                ' \u0645\u06af\u0627\u0628\u0627\u06cc\u062a';\n\n            if (file.size > maxSize) {\n                status.textContent = '\u062d\u062c\u0645 \u0641\u0627\u06cc\u0644 \u0646\u0628\u0627\u06cc\u062f \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u06f2\u06f5 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u0628\u0627\u0634\u062f.';\n                transcribeButton.disabled = true;\n            } else if (file.size === 0) {\n                status.textContent = '\u0641\u0627\u06cc\u0644 \u0627\u0646\u062a\u062e\u0627\u0628\u200c\u0634\u062f\u0647 \u062e\u0627\u0644\u06cc \u0627\u0633\u062a.';\n                transcribeButton.disabled = true;\n            }\n        });\n\n        transcribeButton.addEventListener('click', async function () {\n            const file = input.files && input.files[0];\n            if (!file || transcribeButton.disabled) return;\n\n            transcribeButton.disabled = true;\n            selectButton.disabled = true;\n            status.textContent = '\u062f\u0631 \u062d\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u0648 \u062a\u0628\u062f\u06cc\u0644 \u0641\u0627\u06cc\u0644 \u0635\u0648\u062a\u06cc\u061b \u0644\u0637\u0641\u0627\u064b \u0635\u0628\u0631 \u06a9\u0646...';\n\n            const formData = new FormData();\n            formData.append('action', 'Meetplan_transcribe_audio');\n            formData.append('nonce', nonce);\n            formData.append('audio_file', file);\n\n            try {\n                const response = await fetch(ajaxUrl, {\n                    method: 'POST',\n                    body: formData,\n                    credentials: 'same-origin'\n                });\n\n                const contentType = response.headers.get('content-type') || '';\n                if (!contentType.includes('application\/json')) {\n                    const preview = await response.text();\n                    console.error('[MeetPlan] Non-JSON response:', {\n                        status: response.status,\n                        contentType: contentType,\n                        preview: preview.slice(0, 1500)\n                    });\n                    throw new Error(\n                        '\u067e\u0627\u0633\u062e \u0633\u0631\u0648\u0631 JSON \u0646\u06cc\u0633\u062a (\u06a9\u062f ' + response.status +\n                        '). \u0628\u0631\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a\u060c \u06a9\u0646\u0633\u0648\u0644 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646.'\n                    );\n                }\n\n                const data = await response.json();\n\n                if (!response.ok || !data.success) {\n                    throw new Error(\n                        data && data.data && data.data.message\n                            ? data.data.message\n                            : '\u062f\u0631 \u062a\u0628\u062f\u06cc\u0644 \u0641\u0627\u06cc\u0644 \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0627\u062f.'\n                    );\n                }\n\n                const output = document.createElement('textarea');\n                output.readOnly = true;\n                output.value = data.data.text || '';\n                output.rows = 10;\n                output.style.cssText =\n                    'display:block;width:100%;margin-top:12px;padding:12px;' +\n                    'box-sizing:border-box;direction:rtl;text-align:right;' +\n                    'font:inherit;line-height:2;border:1px solid #ddd;' +\n                    'border-radius:8px;';\n\n                status.textContent = '\u062a\u0628\u062f\u06cc\u0644 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u0646\u062c\u0627\u0645 \u0634\u062f.';\n                status.appendChild(output);\n\n                const copyButton = document.createElement('button');\n                copyButton.type = 'button';\n                copyButton.textContent = '\u06a9\u067e\u06cc \u0645\u062a\u0646';\n                copyButton.style.cssText =\n                    'margin-top:10px;padding:9px 18px;border:0;border-radius:8px;' +\n                    'cursor:pointer;font:inherit;';\n                copyButton.addEventListener('click', async function () {\n                    try {\n                        await navigator.clipboard.writeText(output.value);\n                        copyButton.textContent = '\u0645\u062a\u0646 \u06a9\u067e\u06cc \u0634\u062f \u2713';\n                    } catch (e) {\n                        output.select();\n                        document.execCommand('copy');\n                        copyButton.textContent = '\u0645\u062a\u0646 \u06a9\u067e\u06cc \u0634\u062f \u2713';\n                    }\n                });\n                status.appendChild(copyButton);\n\n            } catch (error) {\n                console.error('[MeetPlan]', error);\n                status.textContent = '\u062e\u0637\u0627: ' + error.message;\n            } finally {\n                transcribeButton.disabled = false;\n                selectButton.disabled = false;\n            }\n        });\n    })();\n    <\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u0635\u062f\u0627\u062a \u0631\u0648 \u0628\u0647 \u0645\u062a\u0646 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646 \u0641\u0627\u06cc\u0644 \u0635\u0648\u062a\u06cc \u0645\u0635\u0627\u062d\u0628\u0647\u060c \u062c\u0644\u0633\u0647 \u06cc\u0627 \u0633\u062e\u0646\u0631\u0627\u0646\u06cc\u200c\u0627\u062a \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646 \u0648 \u0645\u062a\u0646 \u0622\u0646 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646. \u0641\u0627\u06cc\u0644 \u0635\u0648\u062a\u06cc\u200c\u0627\u062a \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646 \u0645\u0635\u0627\u062d\u0628\u0647\u060c \u062c\u0644\u0633\u0647 \u06cc\u0627 \u0633\u062e\u0646\u0631\u0627\u0646\u06cc\u061b \u0645\u062a\u0646 \u0641\u0627\u0631\u0633\u06cc \u0631\u0627 \u0628\u0647\u200c\u0633\u0627\u062f\u06af\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-15","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/meetplan.ir\/index.php?rest_route=\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/meetplan.ir\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/meetplan.ir\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/meetplan.ir\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/meetplan.ir\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=15"}],"version-history":[{"count":19,"href":"https:\/\/meetplan.ir\/index.php?rest_route=\/wp\/v2\/pages\/15\/revisions"}],"predecessor-version":[{"id":42,"href":"https:\/\/meetplan.ir\/index.php?rest_route=\/wp\/v2\/pages\/15\/revisions\/42"}],"wp:attachment":[{"href":"https:\/\/meetplan.ir\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}