TICKET-108275 — Ecovip pousada buttons no response
Task: TICKET-108275
Handoff: 108275
companyIds: ecovip-pousadas--whatsapp-e-askflow--upsell (central); targets ecovip--pousada-recanto--whatsapp--upsell, ecovip--pousada-mandalla--whatsapp--upsell, pousada-cantua
Livechat: https://chat.asksuite.com/?companyId=ecovip-pousadas--whatsapp-e-askflow--upsell&publicId=c194f50a-504a-40bc-9eac-57008218bd48
Problem
Central menu: Recanto / Mandalla / Cantuá click → no bot reply. Meraki / Império / Monjolos / Anauê redirect OK. Works in tree test + AI Studio; fails site/WhatsApp.
Cheap-first gate
- Why not code: Prod S3 trees already wire
goToDialog→ companyId +newChat; runtime already reachesprocessQuickReply/gotToDialogfor the broken units. Symptom matches silent miss after company switch, not missing button config. - Cheaper alternative: Ops — force republish / TreeMap cache refresh for the three target companies; verify assistant/bot active (Cantuá known inactive); optionally point buttons to
{company}.inicial_redelike other rede chains. - Code only if: After ops refresh, TreeMap still returns empty for those company roots on prod channels.
Evidence (2026-10-28)
Central menu (S3 prod)
ecovip-pousadas--whatsapp-e-askflow--upsell/pt-br/dialogs/...inicio.json (published 2026-10-27T18:52Z):
- Recanto →
ecovip--pousada-recanto--whatsapp--upsell+registerData: {"newChat": true} - Mandalla →
ecovip--pousada-mandalla--whatsapp--upsell+ newChat - Cantuá →
pousada-cantua+ newChat - Working peers use same pattern (
pousada-meraki,imperio-cipo, …)
Target trees exist
S3 has full pt-br trees + inicial_rede for Recanto, Mandalla, Cantuá (republished ~2026-10-27T19:25Z). Content is normal list_buttons welcome menus.
Runtime
CloudWatch /aws/lambda/asksuite-generic-bot-prod-handleBotMessage:
- Clicks do resolve:
gotToDialog: ecovip--pousada-recanto--whatsapp--upsell/ Mandalla /pousada-cantua(e.g. 2026-10-27 18:55–18:57, chat-web conv3e362cac-…). - Credits check shows company already switched to target.
- Requests finish
successin ~200ms–1s with no outbound send logs in the same window → matches silent early exit.
Code mechanism (no patch yet)
let dialog =
defaultDialog ||
(await TreeMap.get(
AsksuiteBotUtils.buildTreeMapKey(
context,
data?.dialog || context.company.companyId
)
));
if (!dialog) {
return; // silent — no traveler message
}
Tree test / AI Studio load tree differently than prod channel TreeMap (Redis) → explains “works in test, fails site/WhatsApp”.
Working-chain pattern note
Other rede redirects often land on {company}.inicial_rede explicitly. Ecovip broken buttons use bare companyId (same as working Meraki), so button shape alone is not enough; target TreeMap/company readiness is the differentiator.
Root cause (named)
Prod TreeMap (or company readiness) for Recanto/Mandalla/Cantuá does not yield a resolvable root dialog after redirect, so processQuickReply returns without sending. Not a missing button in the central published tree. Cantuá additionally has no active assistant (handoff).
Rejected simpler options
- Re-save central tree only — already tried; central S3 is correct.
- Code change to always map companyId →
.inicial_rede— premature until TreeMap/company publish is verified; Meraki works with bare companyId.
Plan (ops-first; agent blocked on writes)
- Human/ops: In Control, confirm Recanto / Mandalla / Cantuá companies: bot enabled, chat tree published to prod, Redis/TreeMap warm (force publish or cache clear if available).
- Human/ops: Activate Cantuá assistant (handoff: not active).
- Human validate: Livechat + WhatsApp — click Recanto/Mandalla/Cantuá from central; expect
inicial_rede(or root welcome) text + buttons. - Optional tree tweak: Point the three buttons to
{companyId}.inicial_rede(keepnewChat) and republish central — only if root dialog remains empty after TreeMap refresh. - Code path (only if ops fails): Instrument/fix silent
if (!dialog) returnto log missing key + companyId; add regression. Do not start until ops ruled out.
Acceptance
- Clicking Recanto/Mandalla/Cantuá on site and WhatsApp returns unit welcome (form/transfer path as product expects).
- Meraki/Império still work.
- No agent code commit required if ops publish fixes it.