D
Engineering

chat_inbox

Koleksi chat_inbox — pesan masuk dan keluar. StatusAck melacak pengiriman (pending/sent/error). Dipakai bersama Go API dan Node engine.

Koleksi chat_inbox menyimpan pesan masuk (inbound) dan keluar (outbound). Field Jenis membedakan arah, StatusAck melacak status pengiriman outbound.

Model

models/mongo_chatinbox.go:33 — ChatInboxStruct:

FieldBSON keyTipeNullableCatatan
IDidstring❌Primary key (UUID)
Pesanpesanstring❌Konten pesan
Captioncaption*string✅Untuk media
Nohpnohpstring❌Nomor tujuan/pengirim
Waktuwaktustring❌Timestamp (string, bukan ISODate)
Jenisjenisstring❌"masuk" (inbound) / "keluar" (outbound)
Statusstatusint❌Read status (0=unread, 1=read)
IdUserid_userstring❌User ID pengirim
IdCsid_csstring❌CS yang menangani
IdGudangid_gudang[]string❌Eskalasi warehouse
IdTeamid_teamstring❌Team ID
Instanceinstancestring❌Device instance
Namanamastring❌Nama kontak
Chatidchatidstring❌Chat ID
Rolerolestring❌Role pengirim (CS/Owner/bot)
Profilepicprofilepicstring❌URL foto profil
Isforwardedisforwardedstring❌Flag forward
Tipetipestring❌Jenis pesan: text/image/video/document/audio/link/location
Latlat*string✅Latitude (untuk location)
Lnglng*string✅Longitude
LocationName—string❌Nama lokasi (json only, no bson tag)
LocationAddress—string❌Alamat lokasi (json only, no bson tag)
StatusAckstatus_ackstring❌pending / sent / error
Quotemsgbodyquotemsgbody*string✅Body pesan yang di-quote
MatchedTextmatchedTextstring❌Text yang match (link preview)
Kategorikategoristring❌Kategori pesan
Groupnamegroupnamestring❌Nama grup (jika g.us)
Prosesprosesint❌Flag proses
Jalurjalurstring❌"API" / "WA" / dll.
Pttptt*string✅Push-to-talk audio
Isbcisbcint❌Broadcast flag (0/1)
PesanIdpesan_id*string✅ID pesan WA
IsReadis_readint❌Read flag
IsStartis_startint❌Start chat flag
Notednoted*string✅Catatan
Username—string❌gorm:"" — legacy, no bson
ChatStatuschat_statusstring❌Status chat (new/open/close/pending)
ChatListIdchat_list_idstring❌Link ke chat_list
TempIdtemp_id*string✅Temp ID
RawMessageraw_messagestring❌Raw message blob
QuotedMessagequotedmessage*QuotesMessageStructFormated✅Pesan yang di-quote
Contactcontact*ContactStructFormated✅Contact card

Sub-struct: QuotesMessageStructFormated

mongo_chatinbox.go:3:

FieldBSON keyTipe
StanzaIdstanzaIdstring
Participantparticipantstring
Conversationconversationstring
Tipetipestring
MediaUrlmediaUrlstring

Sub-struct: ContactStructFormated

mongo_chatinbox.go:11:

FieldBSON keyTipe
Namanamastring
Nohpnohpstring
Descdescstring

Status ACK lifecycle

NilaiArtiSetter
pendingMenunggu dikirimHandler Go (saat insert outbound)
sentBerhasil terkirimNode engine (setelah WA gateway confirm)
errorGagalHandler Go (express mode) atau Node engine

Cara akses di handler

Inbound (dari callback_message)

handlers/chat_callback.go:529:

go
errCBX := CreateChatInbox(newChatInbox)

Outbound (dari send_message dll.)

handlers/chat_submit.go:815:

go
errCBX := CreateChatInbox(chatInbox)  // simpan ke chat_inbox dulu

Tenant variants

TenantCollectionHelper
defaultchat_inboxCreateChatInbox
adminadmin_chat_inboxCreateChatInboxAdmin
crmchat_inbox (CRM DB)CreateChatInboxCrm — panic (MongoClientCrm nil)

Catatan

  • Waktu disimpan sebagai string, bukan ISODate — format tidak konsisten antar handler
  • LocationName dan LocationAddress tidak punya bson: tag — tidak di-persist ke Mongo
  • Username punya tag gorm:"" — sisa era GORM, tidak ada bson: tag
  • IdGudang adalah array []string, bukan string tunggal — satu pesan bisa di-eskalasi ke multiple warehouse

Kembali ke