fix(telefonia): tenant novo nasce sem conseguir discar entre ramais
Achado real reportado pelo usuário: "a ligacao entre ramais nao esta funcionando". Não era regressão de nada desta sessão — o tenant onde o usuário registrou os próprios ramais de teste tinha ZERO regras de dialplan e ZERO versão ativa. Nenhum tenant nascia com a regra de "discagem interna": só existia nos tenants onde eu mesmo configurei manualmente durante testes anteriores (Acme). Todo tenant novo nascia incapaz de ligar entre os próprios ramais até alguém configurar isso à mão em Telefonia > Dialplan — um gap real de produto. `DEFAULT_DIALPLAN_EXTENSIONS` (novo, packages/telephony) tem as mesmas 2 regras já testadas ponta a ponta com chamada real (PHASE 53): discagem interna com pickup de grupo + `*8`. `TenantsController.create()` agora semeia essas regras e já ativa a versão 1 do contexto default, na mesma transação de criação do tenant. Reparo pontual aplicado no tenant existente do usuário (mesmas 2 regras, via SQL direto — não existe endpoint de "reparar tenant já criado"). Testado com uma chamada real: originate de um ramal pro outro tocou de verdade no aparelho do usuário (RINGING -> NO_ANSWER, não mais dialplan not found). Auto-seed testado criando um tenant novo de verdade via POST /tenants — confirmado no banco que a versão 1 já nasce ACTIVE. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BFaBaBSQGhyXGEgtTYZGV8
This commit is contained in:
37
packages/telephony/src/default-dialplan.ts
Normal file
37
packages/telephony/src/default-dialplan.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import type { DialplanExtensionInput } from "./dialplan-xml";
|
||||
|
||||
/**
|
||||
* Dialplan padrão do contexto "default" pra todo tenant novo (PHASE 57)
|
||||
* — achado real: nenhum tenant nascia com isso, então nenhum tenant novo
|
||||
* conseguia discar entre os próprios ramais até alguém configurar a
|
||||
* regra manualmente em Telefonia > Dialplan. Mesmas 2 regras já testadas
|
||||
* ponta a ponta com chamada real (PHASE 53): discagem interna com pickup
|
||||
* de grupo (`callgroup`, `${user_data(...)}`) e `*8` pra capturar.
|
||||
*/
|
||||
export const DEFAULT_DIALPLAN_EXTENSIONS: DialplanExtensionInput[] = [
|
||||
{
|
||||
name: "Capturar chamada do grupo (*8)",
|
||||
conditionField: "destination_number",
|
||||
conditionExpr: "^\\*8$",
|
||||
continueOnFalse: false,
|
||||
order: 5,
|
||||
actions: [
|
||||
{ application: "set", data: "my_callgroup=${user_data(${caller_id_number}@${domain_name} var callgroup)}" },
|
||||
{ application: "pickup", data: "${my_callgroup}" },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Discagem interna",
|
||||
conditionField: "destination_number",
|
||||
conditionExpr: "^[0-9]{2,10}$",
|
||||
continueOnFalse: false,
|
||||
order: 10,
|
||||
actions: [
|
||||
{
|
||||
application: "set",
|
||||
data: "called_party_callgroup=${user_data(${destination_number}@${domain_name} var callgroup)}",
|
||||
},
|
||||
{ application: "bridge", data: "user/${destination_number}@${domain_name},pickup/${called_party_callgroup}" },
|
||||
],
|
||||
},
|
||||
];
|
||||
@@ -4,4 +4,5 @@ export * from "./freeswitch-provider";
|
||||
export * from "./directory-xml";
|
||||
export * from "./gateway-xml";
|
||||
export * from "./dialplan-xml";
|
||||
export * from "./default-dialplan";
|
||||
export * from "./queue-xml";
|
||||
|
||||
Reference in New Issue
Block a user