<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.7kas.com/index.php?action=history&amp;feed=atom&amp;title=TuCloudAPI_addextension</id>
	<title>TuCloudAPI addextension - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.7kas.com/index.php?action=history&amp;feed=atom&amp;title=TuCloudAPI_addextension"/>
	<link rel="alternate" type="text/html" href="https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;action=history"/>
	<updated>2026-11-07T01:26:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=1269&amp;oldid=prev</id>
		<title>Maintenance script: TuCloudAPI reference (generated from func=help): field+reason, 700-703 reserved</title>
		<link rel="alternate" type="text/html" href="https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=1269&amp;oldid=prev"/>
		<updated>2026-11-02T10:18:08Z</updated>

		<summary type="html">&lt;p&gt;TuCloudAPI reference (generated from func=help): field+reason, 700-703 reserved&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:18, 2 November 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Create an extension. num is the user&#039;s choice, checked exactly like checkextnum but under a lock shared with addqueue: registered 3-4 digits, blank = next_free; send-to (toext_id set) 3-8 digits and REQUIRED (it is the remote PBX&#039;s number); no leading 0; 112 reserved; not an extension or queue of this PBX; SIP name free in the root. The server derives the SIP user (pbxname+num) and — unless password is supplied — a random SIP password; root/tucloudpbx_id come from the tenant. Every lookup id is validated to belong to this PBX. EVERY refusal carries field, reason and message: invalid_param with field num (required | format | reserved) or a lookup field (cli_id, internalcli_id, toext_id, music, outs_id, backupmonpeer; reason required | not_found | self); conflict with field num (extension | queue | unavailable | full) or teamsnum (teams). The SIP peer + voicemail are created automatically by the DB trigger. Requires a non-readonly ukey. Password is NOT returned (use getextqr).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Create an extension. num is the user&#039;s choice, checked exactly like checkextnum but under a lock shared with addqueue: registered 3-4 digits, blank = next_free; send-to (toext_id set) 3-8 digits and REQUIRED (it is the remote PBX&#039;s number); no leading 0; 112 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and 700-703 &lt;/ins&gt;reserved; not an extension or queue of this PBX; SIP name free in the root. The server derives the SIP user (pbxname+num) and — unless password is supplied — a random SIP password; root/tucloudpbx_id come from the tenant. Every lookup id is validated to belong to this PBX. EVERY refusal carries field, reason and message: invalid_param with field num (required | format | reserved) or a lookup field (cli_id, internalcli_id, toext_id, music, outs_id, backupmonpeer; reason required | not_found | self); conflict with field num (extension | queue | unavailable | full) or teamsnum (teams). The SIP peer + voicemail are created automatically by the DB trigger. Requires a non-readonly ukey. Password is NOT returned (use getextqr).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Call ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Call ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l20&quot;&gt;Line 20:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 20:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cli_id&amp;lt;/code&amp;gt; || integer || Yes || — || Outgoing caller ID id (required; from getextlookups.clis).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cli_id&amp;lt;/code&amp;gt; || integer || Yes || — || Outgoing caller ID id (required; from getextlookups.clis).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt; || string || No || — || Extension number. Registered: 3-4 digits, blank = next_free. Send-to (toext_id set): 3-8 digits, required. Never a leading 0; 112 reserved.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt; || string || No || — || Extension number. Registered: 3-4 digits, blank = next_free. Send-to (toext_id set): 3-8 digits, required. Never a leading 0; 112 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and 700-703 &lt;/ins&gt;reserved.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;ringtime&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Ring seconds: 0 (PBX default) or 5-50.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;ringtime&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Ring seconds: 0 (PBX default) or 5-50.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=1263&amp;oldid=prev</id>
		<title>Maintenance script: TuCloudAPI reference (generated from func=help): checkextnum, extension numbers</title>
		<link rel="alternate" type="text/html" href="https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=1263&amp;oldid=prev"/>
		<updated>2026-11-02T09:45:03Z</updated>

		<summary type="html">&lt;p&gt;TuCloudAPI reference (generated from func=help): checkextnum, extension numbers&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:45, 2 November 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Create an extension. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The server derives &lt;/del&gt;num &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(max+1&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;else 200&lt;/del&gt;; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;112&lt;/del&gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;gt;113&lt;/del&gt;)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;the SIP user (pbxname+num) and — unless password is supplied — a random SIP password; root/tucloudpbx_id come from the tenant. Every lookup id is validated to belong to this PBX. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Unique (pbx&lt;/del&gt;,num) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-&amp;gt; {ok:false&lt;/del&gt;,conflict&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}&lt;/del&gt;. The SIP peer + voicemail are created automatically by the DB trigger. Requires a non-readonly ukey. Password is NOT returned (use getextqr).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Create an extension. num &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is the user&#039;s choice, checked exactly like checkextnum but under a lock shared with addqueue: registered 3-4 digits&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;blank = next_free&lt;/ins&gt;; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;send-to (toext_id set) 3&lt;/ins&gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;8 digits and REQUIRED (it is the remote PBX&#039;s number&lt;/ins&gt;)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; no leading 0; 112 reserved; not an extension or queue of this PBX; SIP name free in the root. The server derives &lt;/ins&gt;the SIP user (pbxname+num) and — unless password is supplied — a random SIP password; root/tucloudpbx_id come from the tenant. Every lookup id is validated to belong to this PBX. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EVERY refusal carries field&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reason and message: invalid_param with field &lt;/ins&gt;num &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(required | format | reserved&lt;/ins&gt;) &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;or a lookup field (cli_id, internalcli_id, toext_id, music, outs_id&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;backupmonpeer; reason required | not_found | self); &lt;/ins&gt;conflict &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;with field num (extension | queue | unavailable | full) or teamsnum (teams)&lt;/ins&gt;. The SIP peer + voicemail are created automatically by the DB trigger. Requires a non-readonly ukey. Password is NOT returned (use getextqr).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Call ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Call ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l19&quot;&gt;Line 19:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 19:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cli_id&amp;lt;/code&amp;gt; || integer || Yes || — || Outgoing caller ID id (required; from getextlookups.clis).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;cli_id&amp;lt;/code&amp;gt; || integer || Yes || — || Outgoing caller ID id (required; from getextlookups.clis).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt; || string || No || — || Extension number. Registered: 3-4 digits, blank = next_free. Send-to (toext_id set): 3-8 digits, required. Never a leading 0; 112 reserved.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;ringtime&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Ring seconds: 0 (PBX default) or 5-50.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;ringtime&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Ring seconds: 0 (PBX default) or 5-50.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot;&gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;pickupgroup&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Pickup group 0-999.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;pickupgroup&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Pickup group 0-999.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;toext_id&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Send-to extension id (0 = registered SIP mode).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;toext_id&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Send-to extension id (0 = registered SIP mode)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Set = num required, 3-8 digits&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt; || string || No || — || Explicit SIP password (blank = auto-generate).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt; || string || No || — || Explicit SIP password (blank = auto-generate).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=1236&amp;oldid=prev</id>
		<title>Maintenance script: TuCloudAPI reference (generated from func=help): translator_langs/translator_lang sent empty clears</title>
		<link rel="alternate" type="text/html" href="https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=1236&amp;oldid=prev"/>
		<updated>2026-10-28T19:49:04Z</updated>

		<summary type="html">&lt;p&gt;TuCloudAPI reference (generated from func=help): translator_langs/translator_lang sent empty clears&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:49, 28 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l68&quot;&gt;Line 68:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 68:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;nota&amp;lt;/code&amp;gt; || string || No || — || Free note (max 256).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;nota&amp;lt;/code&amp;gt; || string || No || — || Free note (max 256).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;translator_langs&amp;lt;/code&amp;gt; || string || No || — || Idiomas que el usuario ENTIENDE, separados por comas (ej. &quot;es,ca,en&quot;), máx. 64. Si la otra parte habla uno de estos, no se traduce ni se factura. Se RECHAZA si excede 64: truncar dejaría fuera el último idioma y traduciría (y cobraría) llamadas que el usuario ya entendía.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;translator_langs&amp;lt;/code&amp;gt; || string || No || — || Idiomas que el usuario ENTIENDE, separados por comas (ej. &quot;es,ca,en&quot;), máx. 64. Si la otra parte habla uno de estos, no se traduce ni se factura. Se RECHAZA si excede 64: truncar dejaría fuera el último idioma y traduciría (y cobraría) llamadas que el usuario ya entendía&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Omitirlo CONSERVA la lista guardada; enviarlo VACÍO la BORRA (desde el 2026-10-28; antes vacío contaba como omitido y la lista no se podía vaciar)&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;translator_lang&amp;lt;/code&amp;gt; || string || No || — || Idioma de la traducción. Obligatorio si translator_mode no es 0; con modo 0 se IGNORA. Debe ser un código de la tabla oficial del servicio, EXACTO y respetando las mayúsculas: «pt-BR» vale y «pt-br», «PT-BR» o «ES» se rechazan. Guion, nunca subrayado. Los 79 códigos admitidos: af ak sq am ar hy az eu be bn bg my ca zh-Hans zh-Hant hr cs da nl en et fil fi fr gl ka de el gu ha he hi hu is id it ja jv kn kk km rw ko lo lv lt mk ms ml mr mn ne no nb fa pl pt-BR pt-PT pa ro ru sr sd si sk sl es su sw sv ta te th tr uk ur uz vi zu. OJO: el portugués y el chino SOLO existen como pt-BR/pt-PT y zh-Hans/zh-Hant — no hay «pt» ni «zh» a secas. Un código fuera de la tabla se rechaza aquí a propósito: el servicio aceptaría el armado y cerraría la sesión después, así que la llamada saldría SIN traducir, sin señal en la centralita y con la detección facturada igual. Los cuatro códigos con guion (pt-BR, pt-PT, zh-Hans, zh-Hant) estuvieron retenidos hasta el 2026-10-01 porque el motor aún no los traducía; ya están disponibles y se aceptan como el resto.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;translator_lang&amp;lt;/code&amp;gt; || string || No || — || Idioma de la traducción. Obligatorio si translator_mode no es 0; con modo 0 se IGNORA. Debe ser un código de la tabla oficial del servicio, EXACTO y respetando las mayúsculas: «pt-BR» vale y «pt-br», «PT-BR» o «ES» se rechazan. Guion, nunca subrayado. Los 79 códigos admitidos: af ak sq am ar hy az eu be bn bg my ca zh-Hans zh-Hant hr cs da nl en et fil fi fr gl ka de el gu ha he hi hu is id it ja jv kn kk km rw ko lo lv lt mk ms ml mr mn ne no nb fa pl pt-BR pt-PT pa ro ru sr sd si sk sl es su sw sv ta te th tr uk ur uz vi zu. OJO: el portugués y el chino SOLO existen como pt-BR/pt-PT y zh-Hans/zh-Hant — no hay «pt» ni «zh» a secas. Un código fuera de la tabla se rechaza aquí a propósito: el servicio aceptaría el armado y cerraría la sesión después, así que la llamada saldría SIN traducir, sin señal en la centralita y con la detección facturada igual. Los cuatro códigos con guion (pt-BR, pt-PT, zh-Hans, zh-Hant) estuvieron retenidos hasta el 2026-10-01 porque el motor aún no los traducía; ya están disponibles y se aceptan como el resto&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Omitirlo CONSERVA el valor guardado; enviarlo VACÍO lo BORRA (desde el 2026-10-28), lo que solo cabe con translator_mode 0, porque con un modo distinto de 0 es obligatorio y el vacío se rechaza&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;translator_mode&amp;lt;/code&amp;gt; || integer || No || — || Máscara de bits (OR de flags), 0 = desactivada, rango 0-63. ÁMBITO, elige QUÉ llamadas se traducen: 1 = entrante externa (una llamada de fuera/DID llega a esta extensión); 2 = saliente externa (esta extensión llama a un número externo/RTC); 4 = entrante interna (otra extensión del mismo PBX llama a esta); 8 = saliente interna (esta extensión llama a otra del mismo PBX). MODIFICADOR, elige EN QUÉ LADO se detecta el idioma: 16 = translator_lang es el idioma del INTERLOCUTOR y no el de esta extensión, así que se detecta siempre el de esta y se traduce al configurado para el otro lado; sirve igual en entrantes y salientes. 32 = ESCUCHA PROLONGADA (en el motor, «traducción permanente» acotada por su VENTANA DE IDIOMA): toda llamada se escucha como máximo los primeros 30 s desde que se contesta. Sin este bit, si al lado que se detecta se le reconoce un idioma que el otro lado ya entiende, la traducción de ESA llamada se desactiva en el acto (unos 2-3 s de escucha, lo más barato); con el bit no se desactiva por eso: se sigue escuchando hasta cumplir los 30 s por si aparece otro idioma (audio malo, saludo con eco), y esa escucha se factura. En los dos casos, sin idioma extranjero confirmado a los 30 s el motor se apaga del todo (coste máximo ~30 s); confirmado dentro de la ventana, se traduce hasta colgar. Un idioma de translator_lang o translator_langs NUNCA se traduce, con el bit o sin él, y el motor nunca traduce por suposición: confirma el idioma extranjero con una segunda comprobación sobre el audio real, así que la primera frase del extranjero (1-2 s) no se locuta. Hasta el 2026-10-28 este texto decía «no se apaga nunca, toda la llamada»: ya no es así. Sirve sobre todo cuando el lado detectado es un manos libres: la voz del otro, captada por su micrófono, puede reconocerse como idioma de ese lado y apagar la traducción antes de tiempo. En una decisión conjunta basta que lo tenga UNA de las filas que participa. 16 y 32 son MODIFICADORES: no activan nada por sí solos, así que un modo con solo modificadores y ningún ámbito se rechaza — marca también cuándo traducir, o deja el modo en 0. UNA SOLA sesión de traducción por llamada, nunca dos. Quién la decide, en una llamada interna (a otra extensión o a un grupo): (a) si esta extensión tiene el bit 16 Y LOS DOS bits de saliente (2 y 8) Y un idioma válido, la arma ella al empezar la llamada, antes de saber el destino, y los ajustes del destino NO se usan; (b) en cualquier otro caso basta que el que llama tenga su bit 8 O el llamado su bit 4, y se toma UNA decisión conjunta con las DOS filas: el idioma del que llama para su pata, el del llamado para la suya, y la lista de idiomas que entiende cada uno — si hablan el mismo idioma o se entienden, no se arma nada. Un lado con translator_mode 0 NO declara nada: su idioma y su lista se ignoran a propósito, para que un dato viejo no pueda vetar en silencio lo que el otro lado sí pidió; su pata se queda en automático y el motor detecta lo que oye. Entrante por un DID (bit 1): decide el destino, salvo que quien llame sea un número de este mismo PBX — esa llamada la puso la centralita y ahí no se arma nada. Un modo distinto de 0 con translator_lang vacío se rechaza: el traductor no se armaría y la llamada no se traduciría sin que nada lo indicase. Omitir el parámetro CONSERVA el valor.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;translator_mode&amp;lt;/code&amp;gt; || integer || No || — || Máscara de bits (OR de flags), 0 = desactivada, rango 0-63. ÁMBITO, elige QUÉ llamadas se traducen: 1 = entrante externa (una llamada de fuera/DID llega a esta extensión); 2 = saliente externa (esta extensión llama a un número externo/RTC); 4 = entrante interna (otra extensión del mismo PBX llama a esta); 8 = saliente interna (esta extensión llama a otra del mismo PBX). MODIFICADOR, elige EN QUÉ LADO se detecta el idioma: 16 = translator_lang es el idioma del INTERLOCUTOR y no el de esta extensión, así que se detecta siempre el de esta y se traduce al configurado para el otro lado; sirve igual en entrantes y salientes. 32 = ESCUCHA PROLONGADA (en el motor, «traducción permanente» acotada por su VENTANA DE IDIOMA): toda llamada se escucha como máximo los primeros 30 s desde que se contesta. Sin este bit, si al lado que se detecta se le reconoce un idioma que el otro lado ya entiende, la traducción de ESA llamada se desactiva en el acto (unos 2-3 s de escucha, lo más barato); con el bit no se desactiva por eso: se sigue escuchando hasta cumplir los 30 s por si aparece otro idioma (audio malo, saludo con eco), y esa escucha se factura. En los dos casos, sin idioma extranjero confirmado a los 30 s el motor se apaga del todo (coste máximo ~30 s); confirmado dentro de la ventana, se traduce hasta colgar. Un idioma de translator_lang o translator_langs NUNCA se traduce, con el bit o sin él, y el motor nunca traduce por suposición: confirma el idioma extranjero con una segunda comprobación sobre el audio real, así que la primera frase del extranjero (1-2 s) no se locuta. Hasta el 2026-10-28 este texto decía «no se apaga nunca, toda la llamada»: ya no es así. Sirve sobre todo cuando el lado detectado es un manos libres: la voz del otro, captada por su micrófono, puede reconocerse como idioma de ese lado y apagar la traducción antes de tiempo. En una decisión conjunta basta que lo tenga UNA de las filas que participa. 16 y 32 son MODIFICADORES: no activan nada por sí solos, así que un modo con solo modificadores y ningún ámbito se rechaza — marca también cuándo traducir, o deja el modo en 0. UNA SOLA sesión de traducción por llamada, nunca dos. Quién la decide, en una llamada interna (a otra extensión o a un grupo): (a) si esta extensión tiene el bit 16 Y LOS DOS bits de saliente (2 y 8) Y un idioma válido, la arma ella al empezar la llamada, antes de saber el destino, y los ajustes del destino NO se usan; (b) en cualquier otro caso basta que el que llama tenga su bit 8 O el llamado su bit 4, y se toma UNA decisión conjunta con las DOS filas: el idioma del que llama para su pata, el del llamado para la suya, y la lista de idiomas que entiende cada uno — si hablan el mismo idioma o se entienden, no se arma nada. Un lado con translator_mode 0 NO declara nada: su idioma y su lista se ignoran a propósito, para que un dato viejo no pueda vetar en silencio lo que el otro lado sí pidió; su pata se queda en automático y el motor detecta lo que oye. Entrante por un DID (bit 1): decide el destino, salvo que quien llame sea un número de este mismo PBX — esa llamada la puso la centralita y ahí no se arma nada. Un modo distinto de 0 con translator_lang vacío se rechaza: el traductor no se armaría y la llamada no se traduciría sin que nada lo indicase. Omitir el parámetro CONSERVA el valor.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=1232&amp;oldid=prev</id>
		<title>Maintenance script: TuCloudAPI reference (generated from func=help): translator_mode bit 32 is long listen</title>
		<link rel="alternate" type="text/html" href="https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=1232&amp;oldid=prev"/>
		<updated>2026-10-28T19:24:01Z</updated>

		<summary type="html">&lt;p&gt;TuCloudAPI reference (generated from func=help): translator_mode bit 32 is long listen&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:24, 28 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l72&quot;&gt;Line 72:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;translator_lang&amp;lt;/code&amp;gt; || string || No || — || Idioma de la traducción. Obligatorio si translator_mode no es 0; con modo 0 se IGNORA. Debe ser un código de la tabla oficial del servicio, EXACTO y respetando las mayúsculas: «pt-BR» vale y «pt-br», «PT-BR» o «ES» se rechazan. Guion, nunca subrayado. Los 79 códigos admitidos: af ak sq am ar hy az eu be bn bg my ca zh-Hans zh-Hant hr cs da nl en et fil fi fr gl ka de el gu ha he hi hu is id it ja jv kn kk km rw ko lo lv lt mk ms ml mr mn ne no nb fa pl pt-BR pt-PT pa ro ru sr sd si sk sl es su sw sv ta te th tr uk ur uz vi zu. OJO: el portugués y el chino SOLO existen como pt-BR/pt-PT y zh-Hans/zh-Hant — no hay «pt» ni «zh» a secas. Un código fuera de la tabla se rechaza aquí a propósito: el servicio aceptaría el armado y cerraría la sesión después, así que la llamada saldría SIN traducir, sin señal en la centralita y con la detección facturada igual. Los cuatro códigos con guion (pt-BR, pt-PT, zh-Hans, zh-Hant) estuvieron retenidos hasta el 2026-10-01 porque el motor aún no los traducía; ya están disponibles y se aceptan como el resto.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;translator_lang&amp;lt;/code&amp;gt; || string || No || — || Idioma de la traducción. Obligatorio si translator_mode no es 0; con modo 0 se IGNORA. Debe ser un código de la tabla oficial del servicio, EXACTO y respetando las mayúsculas: «pt-BR» vale y «pt-br», «PT-BR» o «ES» se rechazan. Guion, nunca subrayado. Los 79 códigos admitidos: af ak sq am ar hy az eu be bn bg my ca zh-Hans zh-Hant hr cs da nl en et fil fi fr gl ka de el gu ha he hi hu is id it ja jv kn kk km rw ko lo lv lt mk ms ml mr mn ne no nb fa pl pt-BR pt-PT pa ro ru sr sd si sk sl es su sw sv ta te th tr uk ur uz vi zu. OJO: el portugués y el chino SOLO existen como pt-BR/pt-PT y zh-Hans/zh-Hant — no hay «pt» ni «zh» a secas. Un código fuera de la tabla se rechaza aquí a propósito: el servicio aceptaría el armado y cerraría la sesión después, así que la llamada saldría SIN traducir, sin señal en la centralita y con la detección facturada igual. Los cuatro códigos con guion (pt-BR, pt-PT, zh-Hans, zh-Hant) estuvieron retenidos hasta el 2026-10-01 porque el motor aún no los traducía; ya están disponibles y se aceptan como el resto.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;translator_mode&amp;lt;/code&amp;gt; || integer || No || — || Máscara de bits (OR de flags), 0 = desactivada, rango 0-63. ÁMBITO, elige QUÉ llamadas se traducen: 1 = entrante externa (una llamada de fuera/DID llega a esta extensión); 2 = saliente externa (esta extensión llama a un número externo/RTC); 4 = entrante interna (otra extensión del mismo PBX llama a esta); 8 = saliente interna (esta extensión llama a otra del mismo PBX). MODIFICADOR, elige EN QUÉ LADO se detecta el idioma: 16 = translator_lang es el idioma del INTERLOCUTOR y no el de esta extensión, así que se detecta siempre el de esta y se traduce al configurado para el otro lado; sirve igual en entrantes y salientes. 32 = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TRADUCCIÓN PERMANENTE&lt;/del&gt;: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sin &lt;/del&gt;este bit, si &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;el idioma &lt;/del&gt;que se detecta &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;resulta ser uno &lt;/del&gt;que el otro lado ya entiende, la traducción de ESA llamada se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;apaga hasta colgar y no se traduce nada &lt;/del&gt;más &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aunque cambie el idioma — así se ahorra el coste. Con &lt;/del&gt;el bit &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;32 la llamada &lt;/del&gt;no se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;apaga nunca&lt;/del&gt;: se sigue escuchando y se traduce &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;en cuanto &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;oye un &lt;/del&gt;idioma &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ajeno&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;y mientras solo se hablen idiomas entendidos &lt;/del&gt;no se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dice nada (&lt;/del&gt;el &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;español no &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;repite en español); la escucha se factura &lt;/del&gt;toda la &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;llamada&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Importa &lt;/del&gt;sobre todo cuando el lado detectado es un manos libres: la voz del otro, captada por su micrófono, puede &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;detectarse &lt;/del&gt;como idioma de ese lado y &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dejar &lt;/del&gt;la &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;llamada sin &lt;/del&gt;traducción &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;para siempre&lt;/del&gt;. En una decisión conjunta basta que lo tenga UNA de las filas que participa. 16 y 32 son MODIFICADORES: no activan nada por sí solos, así que un modo con solo modificadores y ningún ámbito se rechaza — marca también cuándo traducir, o deja el modo en 0. UNA SOLA sesión de traducción por llamada, nunca dos. Quién la decide, en una llamada interna (a otra extensión o a un grupo): (a) si esta extensión tiene el bit 16 Y LOS DOS bits de saliente (2 y 8) Y un idioma válido, la arma ella al empezar la llamada, antes de saber el destino, y los ajustes del destino NO se usan; (b) en cualquier otro caso basta que el que llama tenga su bit 8 O el llamado su bit 4, y se toma UNA decisión conjunta con las DOS filas: el idioma del que llama para su pata, el del llamado para la suya, y la lista de idiomas que entiende cada uno — si hablan el mismo idioma o se entienden, no se arma nada. Un lado con translator_mode 0 NO declara nada: su idioma y su lista se ignoran a propósito, para que un dato viejo no pueda vetar en silencio lo que el otro lado sí pidió; su pata se queda en automático y el motor detecta lo que oye. Entrante por un DID (bit 1): decide el destino, salvo que quien llame sea un número de este mismo PBX — esa llamada la puso la centralita y ahí no se arma nada. Un modo distinto de 0 con translator_lang vacío se rechaza: el traductor no se armaría y la llamada no se traduciría sin que nada lo indicase. Omitir el parámetro CONSERVA el valor.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;translator_mode&amp;lt;/code&amp;gt; || integer || No || — || Máscara de bits (OR de flags), 0 = desactivada, rango 0-63. ÁMBITO, elige QUÉ llamadas se traducen: 1 = entrante externa (una llamada de fuera/DID llega a esta extensión); 2 = saliente externa (esta extensión llama a un número externo/RTC); 4 = entrante interna (otra extensión del mismo PBX llama a esta); 8 = saliente interna (esta extensión llama a otra del mismo PBX). MODIFICADOR, elige EN QUÉ LADO se detecta el idioma: 16 = translator_lang es el idioma del INTERLOCUTOR y no el de esta extensión, así que se detecta siempre el de esta y se traduce al configurado para el otro lado; sirve igual en entrantes y salientes. 32 = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ESCUCHA PROLONGADA (en el motor, «traducción permanente» acotada por su VENTANA DE IDIOMA)&lt;/ins&gt;: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;toda llamada se escucha como máximo los primeros 30 s desde que se contesta. Sin &lt;/ins&gt;este bit, si &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;al lado &lt;/ins&gt;que se detecta &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;se le reconoce un idioma &lt;/ins&gt;que el otro lado ya entiende, la traducción de ESA llamada se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;desactiva en el acto (unos 2-3 s de escucha, lo &lt;/ins&gt;más &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;barato); con &lt;/ins&gt;el bit no se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;desactiva por eso&lt;/ins&gt;: se sigue escuchando &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hasta cumplir los 30 s por si aparece otro idioma (audio malo, saludo con eco), &lt;/ins&gt;y &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;esa escucha se factura. En los dos casos, sin idioma extranjero confirmado a los 30 s el motor se apaga del todo (coste máximo ~30 s); confirmado dentro de la ventana, &lt;/ins&gt;se traduce &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hasta colgar. Un idioma de translator_lang o translator_langs NUNCA &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;traduce, con el bit o sin él, y el motor nunca traduce por suposición: confirma el &lt;/ins&gt;idioma &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;extranjero con una segunda comprobación sobre el audio real&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;así que la primera frase del extranjero (1-2 s) &lt;/ins&gt;no se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;locuta. Hasta &lt;/ins&gt;el &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2026-10-28 este texto decía «no &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;apaga nunca, &lt;/ins&gt;toda la &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;llamada»: ya no es así&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Sirve &lt;/ins&gt;sobre todo cuando el lado detectado es un manos libres: la voz del otro, captada por su micrófono, puede &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reconocerse &lt;/ins&gt;como idioma de ese lado y &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;apagar &lt;/ins&gt;la traducción &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;antes de tiempo&lt;/ins&gt;. En una decisión conjunta basta que lo tenga UNA de las filas que participa. 16 y 32 son MODIFICADORES: no activan nada por sí solos, así que un modo con solo modificadores y ningún ámbito se rechaza — marca también cuándo traducir, o deja el modo en 0. UNA SOLA sesión de traducción por llamada, nunca dos. Quién la decide, en una llamada interna (a otra extensión o a un grupo): (a) si esta extensión tiene el bit 16 Y LOS DOS bits de saliente (2 y 8) Y un idioma válido, la arma ella al empezar la llamada, antes de saber el destino, y los ajustes del destino NO se usan; (b) en cualquier otro caso basta que el que llama tenga su bit 8 O el llamado su bit 4, y se toma UNA decisión conjunta con las DOS filas: el idioma del que llama para su pata, el del llamado para la suya, y la lista de idiomas que entiende cada uno — si hablan el mismo idioma o se entienden, no se arma nada. Un lado con translator_mode 0 NO declara nada: su idioma y su lista se ignoran a propósito, para que un dato viejo no pueda vetar en silencio lo que el otro lado sí pidió; su pata se queda en automático y el motor detecta lo que oye. Entrante por un DID (bit 1): decide el destino, salvo que quien llame sea un número de este mismo PBX — esa llamada la puso la centralita y ahí no se arma nada. Un modo distinto de 0 con translator_lang vacío se rechaza: el traductor no se armaría y la llamada no se traduciría sin que nada lo indicase. Omitir el parámetro CONSERVA el valor.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Example ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Example ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=1082&amp;oldid=prev</id>
		<title>Maintenance script: TuCloudAPI reference regenerated from func=help: tenancy rule, pbx notes on every PBX-scoped function, error codes</title>
		<link rel="alternate" type="text/html" href="https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=1082&amp;oldid=prev"/>
		<updated>2026-10-08T21:16:19Z</updated>

		<summary type="html">&lt;p&gt;TuCloudAPI reference regenerated from func=help: tenancy rule, pbx notes on every PBX-scoped function, error codes&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:16, 8 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;TuCloudAPI function to manage FuturePBX (the cloud PBX). Available to: &amp;#039;&amp;#039;&amp;#039;SuperRoot, Operator, Client&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;TuCloudAPI function to manage FuturePBX (the cloud PBX). Available to: &amp;#039;&amp;#039;&amp;#039;SuperRoot, Operator, Client&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Note|1=Requires the &amp;lt;code&amp;gt;pbx&amp;lt;/code&amp;gt; parameter (the PBX &#039;&#039;&#039;name&#039;&#039;&#039;, e.g. &amp;lt;code&amp;gt;tucall&amp;lt;/code&amp;gt;). The server verifies that your &amp;lt;code&amp;gt;ukey&amp;lt;/code&amp;gt;&#039;s own account owns that PBX, whatever its role; otherwise, and also for a PBX that does not exist, it returns &amp;lt;code&amp;gt;{&quot;ok&quot;:false,&quot;code&quot;:&quot;forbidden&quot;}&amp;lt;/code&amp;gt;.}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Call ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Call ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; GET &lt;/del&gt; https://tucloudapi.7kas.com:9087/tucloud?func=addextension&amp;amp;ukey=YOUR_KEY&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  https://tucloudapi.7kas.com:9087/tucloud?func=addextension&amp;amp;ukey=YOUR_KEY&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;pbx=PBX_NAME&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Requires the &amp;lt;code&amp;gt;ukey&amp;lt;/code&amp;gt; parameter.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GET, or POST with the parameters form-urlencoded in the body. &lt;/ins&gt;Requires the &amp;lt;code&amp;gt;ukey&amp;lt;/code&amp;gt; parameter&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Always HTTP 200; the response is a JSON envelope&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Parameters ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Parameters ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l65&quot;&gt;Line 65:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 67:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;nota&amp;lt;/code&amp;gt; || string || No || — || Free note (max 256).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;nota&amp;lt;/code&amp;gt; || string || No || — || Free note (max 256).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| &amp;lt;code&amp;gt;translator_langs&amp;lt;/code&amp;gt; || string || No || — || Idiomas que el usuario ENTIENDE, separados por comas (ej. &quot;es,ca,en&quot;), máx. 64. Si la otra parte habla uno de estos, no se traduce ni se factura. Se RECHAZA si excede 64: truncar dejaría fuera el último idioma y traduciría (y cobraría) llamadas que el usuario ya entendía.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| &amp;lt;code&amp;gt;translator_lang&amp;lt;/code&amp;gt; || string || No || — || Idioma de la traducción. Obligatorio si translator_mode no es 0; con modo 0 se IGNORA. Debe ser un código de la tabla oficial del servicio, EXACTO y respetando las mayúsculas: «pt-BR» vale y «pt-br», «PT-BR» o «ES» se rechazan. Guion, nunca subrayado. Los 79 códigos admitidos: af ak sq am ar hy az eu be bn bg my ca zh-Hans zh-Hant hr cs da nl en et fil fi fr gl ka de el gu ha he hi hu is id it ja jv kn kk km rw ko lo lv lt mk ms ml mr mn ne no nb fa pl pt-BR pt-PT pa ro ru sr sd si sk sl es su sw sv ta te th tr uk ur uz vi zu. OJO: el portugués y el chino SOLO existen como pt-BR/pt-PT y zh-Hans/zh-Hant — no hay «pt» ni «zh» a secas. Un código fuera de la tabla se rechaza aquí a propósito: el servicio aceptaría el armado y cerraría la sesión después, así que la llamada saldría SIN traducir, sin señal en la centralita y con la detección facturada igual. Los cuatro códigos con guion (pt-BR, pt-PT, zh-Hans, zh-Hant) estuvieron retenidos hasta el 2026-10-01 porque el motor aún no los traducía; ya están disponibles y se aceptan como el resto.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| &amp;lt;code&amp;gt;translator_mode&amp;lt;/code&amp;gt; || integer || No || — || Máscara de bits (OR de flags), 0 = desactivada, rango 0-63. ÁMBITO, elige QUÉ llamadas se traducen: 1 = entrante externa (una llamada de fuera/DID llega a esta extensión); 2 = saliente externa (esta extensión llama a un número externo/RTC); 4 = entrante interna (otra extensión del mismo PBX llama a esta); 8 = saliente interna (esta extensión llama a otra del mismo PBX). MODIFICADOR, elige EN QUÉ LADO se detecta el idioma: 16 = translator_lang es el idioma del INTERLOCUTOR y no el de esta extensión, así que se detecta siempre el de esta y se traduce al configurado para el otro lado; sirve igual en entrantes y salientes. 32 = TRADUCCIÓN PERMANENTE: sin este bit, si el idioma que se detecta resulta ser uno que el otro lado ya entiende, la traducción de ESA llamada se apaga hasta colgar y no se traduce nada más aunque cambie el idioma — así se ahorra el coste. Con el bit 32 la llamada no se apaga nunca: se sigue escuchando y se traduce en cuanto se oye un idioma ajeno, y mientras solo se hablen idiomas entendidos no se dice nada (el español no se repite en español); la escucha se factura toda la llamada. Importa sobre todo cuando el lado detectado es un manos libres: la voz del otro, captada por su micrófono, puede detectarse como idioma de ese lado y dejar la llamada sin traducción para siempre. En una decisión conjunta basta que lo tenga UNA de las filas que participa. 16 y 32 son MODIFICADORES: no activan nada por sí solos, así que un modo con solo modificadores y ningún ámbito se rechaza — marca también cuándo traducir, o deja el modo en 0. UNA SOLA sesión de traducción por llamada, nunca dos. Quién la decide, en una llamada interna (a otra extensión o a un grupo): (a) si esta extensión tiene el bit 16 Y LOS DOS bits de saliente (2 y 8) Y un idioma válido, la arma ella al empezar la llamada, antes de saber el destino, y los ajustes del destino NO se usan; (b) en cualquier otro caso basta que el que llama tenga su bit 8 O el llamado su bit 4, y se toma UNA decisión conjunta con las DOS filas: el idioma del que llama para su pata, el del llamado para la suya, y la lista de idiomas que entiende cada uno — si hablan el mismo idioma o se entienden, no se arma nada. Un lado con translator_mode 0 NO declara nada: su idioma y su lista se ignoran a propósito, para que un dato viejo no pueda vetar en silencio lo que el otro lado sí pidió; su pata se queda en automático y el motor detecta lo que oye. Entrante por un DID (bit 1): decide el destino, salvo que quien llame sea un número de este mismo PBX — esa llamada la puso la centralita y ahí no se arma nada. Un modo distinto de 0 con translator_lang vacío se rechaza: el traductor no se armaría y la llamada no se traduciría sin que nada lo indicase. Omitir el parámetro CONSERVA el valor.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Example ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Example ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l71&quot;&gt;Line 71:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 79:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Response ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Response ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{ok, ext:{...}} (no password).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{ok, ext:{...}} (no password).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Errors ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Always HTTP 200. On failure the body is &amp;lt;code&amp;gt;{&quot;ok&quot;:false,&quot;code&quot;:&quot;...&quot;,&quot;message&quot;:&quot;...&quot;}&amp;lt;/code&amp;gt;. Common codes: &amp;lt;code&amp;gt;missing_pbx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;forbidden&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;invalid_param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;not_found&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;conflict&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;in_use&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;db_error&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;server_busy&amp;lt;/code&amp;gt;; the Response section above lists any specific to this function.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[TuCloudAPI]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[TuCloudAPI]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:TuCloudAPI SuperRoot]][[Category:TuCloudAPI Operator]][[Category:TuCloudAPI Client]][[Category:TuCloudAPI]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:TuCloudAPI SuperRoot]][[Category:TuCloudAPI Operator]][[Category:TuCloudAPI Client]][[Category:TuCloudAPI]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=806&amp;oldid=prev</id>
		<title>Maintenance script: TuCloudAPI reference: pbx param help -&gt; FuturePBX (API surface unchanged)</title>
		<link rel="alternate" type="text/html" href="https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=806&amp;oldid=prev"/>
		<updated>2026-08-03T14:30:52Z</updated>

		<summary type="html">&lt;p&gt;TuCloudAPI reference: pbx param help -&amp;gt; FuturePBX (API surface unchanged)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:30, 3 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot;&gt;Line 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Parameter !! Type !! Required !! Default !! Meaning&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Parameter !! Type !! Required !! Default !! Meaning&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;pbx&amp;lt;/code&amp;gt; || string || Yes || — || &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TuCloud PBX &lt;/del&gt;NAME (e.g. tucall). The (ukey, pbx) pair is the tenant boundary; the server verifies the ukey owns this PBX.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;pbx&amp;lt;/code&amp;gt; || string || Yes || — || &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;FuturePBX &lt;/ins&gt;NAME (e.g. tucall). The (ukey, pbx) pair is the tenant boundary; the server verifies the ukey owns this PBX.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; || string || Yes || — || Display name (required, max 64).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; || string || Yes || — || Display name (required, max 64).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=667&amp;oldid=prev</id>
		<title>Maintenance script: TuCloudAPI reference: product name -&gt; FuturePBX (API surface unchanged); regenerated from func=help</title>
		<link rel="alternate" type="text/html" href="https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=667&amp;oldid=prev"/>
		<updated>2026-08-03T14:13:53Z</updated>

		<summary type="html">&lt;p&gt;TuCloudAPI reference: product name -&amp;gt; FuturePBX (API surface unchanged); regenerated from func=help&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:13, 3 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;TuCloudAPI function to manage &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tucloud &lt;/del&gt;(PBX) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;services&lt;/del&gt;. Available to: &#039;&#039;&#039;SuperRoot, Operator, Client&#039;&#039;&#039;.&#039;&#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;TuCloudAPI function to manage &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;FuturePBX &lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the cloud &lt;/ins&gt;PBX). Available to: &#039;&#039;&#039;SuperRoot, Operator, Client&#039;&#039;&#039;.&#039;&#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=512&amp;oldid=prev</id>
		<title>Maintenance script: API docs (generated from func=help) — add #48 adminusers + #52 pbxconfig</title>
		<link rel="alternate" type="text/html" href="https://wiki.7kas.com/index.php?title=TuCloudAPI_addextension&amp;diff=512&amp;oldid=prev"/>
		<updated>2026-08-02T04:37:51Z</updated>

		<summary type="html">&lt;p&gt;API docs (generated from func=help) — add #48 adminusers + #52 pbxconfig&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;TuCloudAPI function to manage tucloud (PBX) services. Available to: &amp;#039;&amp;#039;&amp;#039;SuperRoot, Operator, Client&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Create an extension. The server derives num (max+1, else 200; 112-&amp;gt;113), the SIP user (pbxname+num) and — unless password is supplied — a random SIP password; root/tucloudpbx_id come from the tenant. Every lookup id is validated to belong to this PBX. Unique (pbx,num) -&amp;gt; {ok:false,conflict}. The SIP peer + voicemail are created automatically by the DB trigger. Requires a non-readonly ukey. Password is NOT returned (use getextqr).&lt;br /&gt;
&lt;br /&gt;
== Call ==&lt;br /&gt;
 GET  https://tucloudapi.7kas.com:9087/tucloud?func=addextension&amp;amp;ukey=YOUR_KEY&lt;br /&gt;
Requires the &amp;lt;code&amp;gt;ukey&amp;lt;/code&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Parameter !! Type !! Required !! Default !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pbx&amp;lt;/code&amp;gt; || string || Yes || — || TuCloud PBX NAME (e.g. tucall). The (ukey, pbx) pair is the tenant boundary; the server verifies the ukey owns this PBX.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; || string || Yes || — || Display name (required, max 64).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cli_id&amp;lt;/code&amp;gt; || integer || Yes || — || Outgoing caller ID id (required; from getextlookups.clis).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ringtime&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Ring seconds: 0 (PBX default) or 5-50.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;internalcli_id&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Internal/mobile CLI id (0 = none).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;teamsopt&amp;lt;/code&amp;gt; || string || No || &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; || T=Teams, S=VoIP, TS=both.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;teamsnum&amp;lt;/code&amp;gt; || string || No || — || Teams number (digits only, max 64; unique).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pickupgroup&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Pickup group 0-999.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;toext_id&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Send-to extension id (0 = registered SIP mode).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt; || string || No || — || Explicit SIP password (blank = auto-generate).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;backupnum&amp;lt;/code&amp;gt; || string || No || — || Backup number (digits and +, max 64).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;backupmonpeer&amp;lt;/code&amp;gt; || string || No || — || Extension num to monitor for backup.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;music&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Music-on-hold id (0 = default).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tom&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || 0=tone, 1=music.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;voicemail&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || 1=enable voicemail.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt; || string || No || — || Voicemail/notification email.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;incom_only_contacts&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || 1=accept only contacts/extensions.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;fwdshowcaller&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || 1=show original caller on forward.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;fwd_cli&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || External-forward caller-ID (0=Si,1=No; inverse).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;fwd&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || External forward: 0=off,1=all,2=busy,3=noanswer,4=busy/noanswer.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;fwdnum&amp;lt;/code&amp;gt; || string || No || — || External forward destination.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;fwd_internal&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Internal forward (same 0-4 scale).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;fwdnum_internal&amp;lt;/code&amp;gt; || string || No || — || Internal forward destination.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;recoutgoing&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || 1=record outgoing calls.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;only_contacts&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || 1=restrict outbound to contacts.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;outs_id&amp;lt;/code&amp;gt; || integer || No || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Outgoing service id (0 = none).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nota&amp;lt;/code&amp;gt; || string || No || — || Free note (max 256).&lt;br /&gt;
|}&lt;br /&gt;
== Example ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://tucloudapi.7kas.com:9087/tucloud?func=addextension&amp;amp;ukey=KEY&amp;amp;pbx=tucall&amp;amp;name=Recepcion&amp;amp;cli_id=81324&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Response ==&lt;br /&gt;
{ok, ext:{...}} (no password).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to [[TuCloudAPI]]&lt;br /&gt;
[[Category:TuCloudAPI SuperRoot]][[Category:TuCloudAPI Operator]][[Category:TuCloudAPI Client]][[Category:TuCloudAPI]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>