ask-handoff

TICKET-108275 Ecovip pousada redirect no response

slug ticket-108275-ecovip-pousada-redirect project asksuite-generic-bot source ticket-108275 updated 10/28/2026, 3:08:49 PM

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 reaches processQuickReply / gotToDialog for 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_rede like 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 conv 3e362cac-…).
  • Credits check shows company already switched to target.
  • Requests finish success in ~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)

  1. 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).
  2. Human/ops: Activate Cantuá assistant (handoff: not active).
  3. Human validate: Livechat + WhatsApp — click Recanto/Mandalla/Cantuá from central; expect inicial_rede (or root welcome) text + buttons.
  4. Optional tree tweak: Point the three buttons to {companyId}.inicial_rede (keep newChat) and republish central — only if root dialog remains empty after TreeMap refresh.
  5. Code path (only if ops fails): Instrument/fix silent if (!dialog) return to 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.