- Update channel type to save external ID for MO messages if we can, so we can dedupe by that
- Test with PostgreSQL 15
- Remove Legacy Twitter (TT) type registration
- Remove Blackmyna, Junebug, old Zenvia channel type handlers
- Fix retrieve media files for D3C
- Revert validator dep upgrade
- Update to go 1.20
- Update deps
- Add Messagebird channel type
- Always save http_logs as [] rather than null
- Add docker file for dev
- Rework deduping of incoming messages to ignore message content if message has id we can use
- Use bulk SQL operation for msg status flushing
- Fix setting of log type of channel logs and add additional types
- Update deps including gocommon which changes requirement for storage paths to start with slash
- Adjust to make sure we set the name of the document for the WAC files attached
- Add log_policy field to channel
- Add cpAddress parameters to MTN outbound requests
- Tweak error message on media parse failure
- Add writer to write attached logs to storage instead of db
- Rework writing msg statuses to use Batcher like channel logs
- Rework log committer to use new generic Batcher type which will be easier to rework to support S3 logs as well
- Support requesting attachments for Twilio with basic auth
- Update README
- Support Dialog360 Cloud API channels
- Stop writing ChannelLog.msg
- Use Basic auth for fetching BW media attachments
- Save received MO media for BW channels
- Use max_length from config for external channels
- Change default for FBA channels to messaging_type=UPDATE
- Use origin and contact last seen on to determine message type and tag for FBA channels
- Use postgres and redis as services in github actions
- Update github actions versions
- Ignore dates for hormund mo as they're not reliable or accurate
- Remove chikka handler (company no longer exists)
- Remove JSON tags for msg fields not used in sending
- Address the expired status for MTN msgs
- Update test database credentials for consistency with other projects
- Fetch attachments endpoint should return connection errors as unavailable attachments
- Fix MTN status report payload
- MTN status reports are sent to the MO callback URL
- Add way to customize the API host for MTN channels in channel config
- Convert more handlers to use JSONPayload wrapper
- Fix config for MTN channel for getting token and setting expiration
- Add generic JSON handler wrapper that takes care of decoding and validaing incoming JSON payloads
- Add support for MTN Developer Portal channel
- Remove recipient_id requirements on statuses part of payload
- Reduce time allowed for attachment requests so that we return before server cancels us
- Test with org and channel configs as non-null JSONB columns
- Create messages with msg_type=T
- Bump golang.org/x/net from 0.2.0 to 0.7.0
- Switch to gocommon/uuids for UUID types
- Read quick_replies from msg field instead of inside metadata
- Update to v2 of nyaruka/null
- Add support for localizing Menu header on facebook list messages
- Use Msg.locale with on-prem WhatsApp channels too
- Support reading msg locale and use that instead of language+country on templating
- Remove passing the parameters as null for WA template components
- Fix for BW handler not being loaded
- Fix typos in README
- Support bandwidth channel type
- Enable back Arabiacell SSL validation
- Remove temp workaround to stop D360 channels taking longer than 5 seconds to request attachments
- Add logs for Facebook, Instagram, Viber, Telgram and Line specific errors
- Update deps
- Rework channel log errors to have separate code and ext_code fields to remove the need for namespaces
- Add logs for WhatsApp Cloud specific errors
- Ensure that URN and contact name are valid utf8 before trying to write to DB
- Update to latest gocommon which provides dbutil.ToValidUTF8
- Resolve error codes to messages for Twilio and Vonage and log errors for Twilio DLRs
- Don't add returned err to channel log if it has logged errors already
- Allow msg id to be passed to fetch attachment requests and saved on the channel log
- Update attachment fetching to handle non-200 response as an unavailable attachment
- Fix returning non-nil courier.Channel for deleted channels
- Set server idle timeout to 90 seconds
- Test against redis 6.2 and postgres 14
- Update to latest gocommon
- Allow empty attachments, e.g. a txt file
- Update deps including phonenumbers
- Fetch access tokens for WeChat, JioChat channels as needed
- Use redisx.IntervalHash for message de-duping checks
- Add support for JustCall channel type
- Don't try to download WA attachments with no mediaID
- Add WAC interactive message support with attachments, quick replies and captions.
- Fix recording overall time of an attachment-fetch channel log
- Remove no longer used channel_uuid and channel_type fields from msg event payload queued to mailroom
- Update to latest gocommon
- Stop fetching attachments and let message handling service do that via endpoint
- Fix handling empty and non-200 responses from attachment fetches
- Fix handling of geo attachments
- Rework attachment fetching to keep URL and content type separate
- Basic auth on status endpoint should be optional
- Add endpoint to download and store attachments by their URL
- Update dependencies
- Skip SSL verification for AC channels
- Fix channel log type token_refresh
- Add channel UUID and type to queued msg events
- More jsonx.MustMarshal
- Customize the http client for D3 attachment fetches to have a timeout of 3 secs
- Always return 200 status for all WA webhook requests
- Remove temporary logging
- Tweak large attachment logging
- Tweak large attachment logging
- Temp logging for large files
- Update to latest gocommon and remove previous temp logging
- More logging for large attachment downloads
- Tweak error message
- Add more detail to error message from S3 put
- Update deps
- Include requests to download attachments on the channel log for the incoming message
- Add support for better channel error reporting
- Allow twiml channels to send multiple media urls per message
- Update msg status updating to allow skipping WIRED state
- Simplify constructing responses and add tests
- Make it easier to override responses per handler
- Update to use SHA256 signature for FBA payload, increase max body bytes limit to 1MiB
- Meta channels webhooks requests, should always return 200 status
- Fix server logging when channel is nil
- Fix junebug redaction values
- Fix redaction on sends and add redaction of error messages
- Adjust logging for WAC missing channel
- Update to latest gocommon
- Implement redaction of channel logs
- Adjust to use the cache by address correctly
- Rework handler tests to assert more state by default
- Remove duplicate status writes
- Append channel log UUIDs on status writes
- Set log UUID on incoming messages and channel events
- Use go 1.19
- Fix some linter warnings
- Support channels receiving embedded attachments and use with thinq handler
- Save channel logs with UUID
- Add codecov token to ci.yml
- Add WAC support for sending captioned attachments
- Cleanup tests
- Include requests made by DescribeURN methods in the channel log for a receive
- Fix writing errors to channel logs
- Update to last gocommon
- Fix local timezone dependent test
- Don't fail CI for codecov problems
- Add UUID to channel logs
- Replace remaining usages of MakeHTTPRequest
- Fix insert channel log SQL
- Fix writing channel logs
- Write channel logs in new format
- Use logger for handler func calls
- Update to latest gocommon and use new recorder reconstruct option
- Use httpx.Recorder to generate traces of incoming requests
- Rework WhatsApp handler to use logger, remove code for storing logs on status objects
- Adjust LINE to support sending attachments with quick replies later
- Rework more channel types to pass back traces and errors via logger instead of on status object
- Update to latest gocommon and fix some go warnings
- Support media attachments for LINE
- Rework handler DescribeURN methods to take a channel logger
- Update more sending to use channel logger
- Rename S3MediaBucket to S3AttachmentsBucket and S3MediaPrefix to S3AttachmentsPrefix
- More handlers to use new HTTP functions
- Move testing code out of courier package and into new test package
- Rework some handler sending to record logs via a logger rather than on the status object
- Convert remaining channel types to use httpx.Trace
- Fix URLs from non-resolved attachments that may not be properly escaped
- Use httpx.DoTrace for some channels
- Convert telegram handler to use ResolveAttachments
- Add support for resolving media on the backend
- Switch to using null.Map instead of utils.NullMap
- Add AWS Cred Chain support for S3
- Update deps and fix incorrect errors import in some handler packages
- Fix receiving attachments in WAC
- Support receiving LINE attachments
- Support Quick replies for LINE channels
- Slack channel support
- Fix receiving quick replies and list replies in WAC
- Add link preview support in WAC
- Update README
- Use analytics package from gocommon
- Make sure text are sent after audio attachments for WA channels
- Add arm64 as a build target
- Add support for WA Cloud API
- Refactor FBA tests
- Add log to status first when handling telegram opt outs
- Fix to not stop contact for other errors
- Update to go 1.18 and latest gocommon/phonenumbers/jsonparser
- Update Start Mobile send URL
- Update WhatsApp handler so that we update the URN if the returned ID doesn't match
- Stop Telegram contact that have blocked the channel bot
- Quick fix to stop JSON content being omitted in logs
- Update to latest gocommon and start using httpx.DetectContentType
- Add link preview attribute for sending whatsapp
- Update golang.org/x/sys
- Fix handling stops via status callbacks on Twilio
- Support stopping contacts when we get stop events on status callbacks
- CI testing with go 1.17.7
- Update D3 handler to support check for whatsapp contact not in contact store
- Fix type for IsDeleted field for IG unsend events
- Fix metadata fetching for new Facebook contacts
- Fix whatsapp uploaded attachment file name
- Use deleted by sender visibity for message unsent on IG channels
- Add missing languages from whatsapp template
- Do not save any message when receiving IG story mentions
- Update to latest gocommon
- Pause WA channel bulk queue when we hit the spam rate limit
- Fix Gujarati whatsapp language code
- Send flow name as user_data to HX
- Allow more active redis connections
- Support sending WA quick replies when we have attachments too
- Add support to receive button text from Twilio WhatsApp
- Send db and redis stats to librato in backed heartbeat
- Include session_status in FCM payloads
- Update to latest gocommon
- Add instagram handler
- More bulk sql tweaks
- Update to latest gocommon
- Fix bulk status updates
- Do more error wrapping when creating contacts and URNs
- Use dbutil package from gocommon
- Add quick replies for vk
- Throttle WA queues when we get 429 responses
- Add Msg.failed_reason and set when msg fails due to reaching error limit
- Remove loop detection now that mailroom does this
- Smarter organization of quick replies for viber keyboards
- Use response_to_external_id instead of response_to_id
- External channel handler should use headers config setting if provided
- Pin to go 1.17.2
- Remove chatbase support
- Test with Redis 3.2.4
- Add support for 'Expired' status in the AT handler
- Tweak README
- Fix Viber attachments
- CI testing on PG12 and 13
- Update to latest gocommon and go 1.17
- Fix Facebook document attachment
- Update to latest gocommon and phonenumbers
- Fix to only set the quick replies keyboard for the last message
- Update to latest gocommon
- Fix FB signing checks by trimming prefix instead of stripping
- Improve layout of Telegram keyboards
- Send WhatsApp buttons and list buttons when supported (thanks Weni)
- trim prefix instead of strip when comparing FB sigs
- log body when calculating signatures, include expected and calculated
- Add ticket_count column to contact and set to zero when creating new contacts
- Give S3 storage test new context on startup
- Make DBMsg.SentOn nullable
- Always set sent_on for W/S/D statuses if not already set
- Update to latest gocommon
- 6.4.0 Release Candidate
- up max request size to 1M
- Include filename when sending WhatsApp attachments
- Support using namespace from the template translation
- Add is_resend to Msg payload to allow for resending messages manually
- Do not verify the SSL certificate for Bongo Live
- Update BL to remove UDH parameter and use HTTPS URL
- Handle whatsapp URNs sent to Twiml handler without prefix
- Add support for Zenvia SMS
- Add support for Zenvia WhatsApp
- Add handling for button whatsapp message type
- Bump CI testing to PG 11 and 12
- Add Kaleyra channel type
- 6.2.0 RC
- switch id to bigserial
- Cache media upload failures localy for 15m
- include header when sanitizing request/response
- Cleanup of whatsapp media handling
- Detect media type for uploading media
- Better logging of error cases when uploading WhatsApp media
- use url.parse to build media URL
- Add TextIt WhatsApp channel type
- Check and log errors when building URLs for sending
- Update README
- URN channel change only for channels with SEND role
- Update to gocommon v1.6.1
- Add RocketChat handler
- Add discord handler
- Cache media ids for WhatsApp attachments
- Support receiving Multipart form data requests for EX channels
- Update to latest gocommon 1.5.3 and golang 1.15
- Add session status from mailroom to MT message sent to external channel API call
- Remove incoming message prefix for Play Mobile free accounts
- deal with empty message in FreshChat incoming requests
- Update to gocommon v1.5.1
- Remove dummy values for AWS config values so you can use local file system for testing
- Use gsm7, storage, dates and uuids packages from gocommon
- No longer write contact.is_stopped or is_blocked
- Support receiving XML for CM channels
- Write status on new contacts
- Add support for Whatsapp 360dialog
- Include created_on in msg_event
- Include occurred_on when queueing channel events for mailroom
- Deal with Shaqodoon not properly escaping + in from
- Add ClickMobile channel type
- Save the Ad ID for Facebook postback referral
- 5.6.0 Candidate Release
- Fix FBA signature validation and channel lookup
- Add country field and support for more template languages on WhatsApp handler
- Only log channel events when we have a channel matched
- HX channel sends MO using ISO 8859-1 encoding
- Load FBA channel handler package
- Support loading channels with null address
- Add support for FBA channel type
- User reply endpoint when possible for LINE messages
- Fix FB location attachment to be handled at geo attachment
- TS expects national numbers only
- Upgrade FB graph API to 3.3
- TS sends should use mobile instead of from
- Support sending document attachments for Telegram
- Add option for Telesom Send URL
- Ignore received message request in Telegram handler when a file cannot be resolved
- Support using national number for EX channel if configured so
- Add Telesom channel type support
- Use Channel specific max_length config value if set
- Increase ArabiaCell max length to 1530
- Retry WhatsApp channel messaging after contact check with returned WhatsApp ID
- Fix sending WA template messages on new WhatsApp docker
- Add option for Kannel channels to ignore duplicative sent status
- More tweaks to slowing down batching of status commits when approaching max queue size
- slow queuing before reaching our max batch size
- Slow queuing into a batch when batches are full
- Increase buffer size
- Add support for Viber stickers as image attachments for incoming messages
- handle error cases for whatsapp callbacks
- add native panic handling
- Send msg in batches and add image msg type in the LINE channel
- Add contacts not already present for WhatsApp when sending error detected (thanks @koallann)
- add fabric to gitignore
- add fabric to gitignore
- Strip cookie from incoming requests
- touch README for 5.4 release
- Add VK Channel
- Fix Chatbase request body
- Fix quick replies variable replacement on external channel long msg
- Allow configuring and sending of quick replies for external channels
- Refactor FMC channel to support the fixed quick replies structure
- Change Arabia Cell max length to 670, fixes #274
- Add support for Twilio Whatsapp channel type
- Convert to use Github actions for CI
- Fix freshchat image handing
- Set Facebook message type tag when topic is set on message
- update changelog for v5.3
- Send WhatsApp media via URL
- Log Zenvia errors to ChannelLog instead of Sentry
- Ignore status updates for incoming messages
- Sync version with RapidPro 5.2
- Test matrix release
- Test deploying with matrix build
- test releasing only on pg10
- Derive contact name for new WhatsApp contacts (thanks @devchima)
- properly log connection errors for whatsapp
- use latest librato library
- tune HTTP transport settings
n
- tune HTTPClient settings to better deal with slow hosts
- Use multipart form encoding for thinQ
- Add thinq handler
- turn thumbs up stickers into thumbs up emoji
- Tweak lua script for checking loops, add more tests
- Make sure we never overflow our count when considering loops
- Check whether outgoing message is in a loop before sending
- Add FreshChat channel type
- Latest phonenumbers library
- Fix sending for ClickSend
0;95;0c# Enter any comments for inclusion in the CHANGELOG on this revision below, you can use markdown
- ignore viber dlrs as they are sent for both in and out
- add WhatsApp scheme support for TWIML channels
- ignore flow server enabled attribute on orgs
- stop looking / writing is_test on contact
- add bearer before auth token for Hormuud
- add SignalWire handler (https://www.signalwire.com)
- refactor twilio->twiml
- remove ignore DLR global config, make per channel for TWIML channels
- add ClickSend channel
- increase http timeouts to 60 seconds for AfricasTalking, Hormuud token lasts 90 minutes
- update Portuguese mapping
- new Hormuud channel for somalia
- add video support for WhatsApp
- have batch committer print when flushed
- move stopping of bulk committers to cleanup phase
- Switch to newer library for UUID generation
- raise delay before bulk commits to 500ms
- optimize sends via bulk inserts and updates
- allow configuring custom mo fields for external channels
- implement sending whatsapp templates
- Add maintenance mode to run without a DB and only spool inbound requests
- Prevent Facebook duplicate messages, dedupe in external id
- ignore deleted status for whatsapp
- mark deleted WhatsApp messages as failed
- include extra for channel events in response
- deduplicate WA messages on external ID
- normalize TEL urns with the country
- latest phonenumbers
- Queue welcome message event to be handle by mailroom
- add sub-message ids for long messages on play mobile
- send configured welcome message on converssation started for Viber
- proper name for queues to check size
- log queue sizes and new contact creations to librato
- add queued on to all tasks
- move queued on to task level
- add queued_on to tasks sent to mailroom so we can calculate latency
- fixes us creating an orphaned contact when we get two messages at the same instant
- send fb attachments first instead of last, add quick replies to last message instead of first
- Fix to use DLRID for Bongolive status reports
- Use unix timestamp for MO receive on WAVy channels
- Make bongolive inbound msg type optional
- Properly handle long attachment description for Viber
- Load BL handler package
- Add support for Movile/Wavy channels, Thanks to MGov to fund the development of the integration
- Use UPPERCASE parameters for BL channels
- Migrate courier to PostgreSQL 10
- Switch BL channels used API
- add support for Bongo Live channels
- Switch to use nyaruka/librato package
- Complete conversion to module
- Updated Zenvia endpoint according to new API
- set session timeouts when specified by mailroom
- Support using the custom configured content type for EX channels
- Fix panicr on parsing SOAP body for EX channels
- Support sending images and videos in Twitter
- fix twitter sending
- Twitter media attachments
- Commit transaction when adding URN to contact with success
- Fix typo
- Simply remove URNs by update query
- Fix params names
- Fix Facebook for contact duplicates when using referral, save the proper Facebook URN when we first successfully send to the referral contact URN
- Ignore error for Jiochat user name lookup
- remove ipv6 binding for redis server
- add urn id to channel events
- do not return errors from whatsapp send during client errors
- Better channel logs support for WA channels
- prevent races in dupe detection by clearing before sending
- use URN identity for URN fingerprint
- return empty content when receiving i2sms messages
- add i2sms channel
- allow setting kannel dlr mask
- Support receiving MO msgs in XML format
- Add channel log for when we fail to get the response expected
- Support checking configured response content for EX channels
- Add stopped event handler for EX channels
- queue tasks to mailroom for flow_server_enabled orgs, requires newest rapidpro
- flush to librato every second
- Add authorization token requirement to receive messages on Novo Channel
- optimize writing message status for external case
- optimize status update when we know message id
- add media handling for whatsapp
- clear dedupes on outgoing messages
- AT date like 2006-01-02 15:04:05, without T nor Z
- Accept AT requests with timestamps without Z
- Ignore status update for incoming messsages
- Support smart encoding for post requests on EX channels
- Add novo channel with send capability
- log the error when PQ fails to connect
- Changed the default redis database to match rapid pro redis database
- treat empty content type as text
- updated go.mod and go.sum files for go modules support
- add optional transliteration parameter for MT messages with infobip
- add support to use configured encoding for EX channels
- Add support for WeChat
- use utf8 to shorten string so we don't end up with an invalid string
- proper backdown for Nexmo retries
- Trim contact names at 127 characters
- move to gocommon, honor e164 numbers handed to us
- update to latest phonenumbers, update tests
- reduce spacing between messages to 3 seconds
- add an address option to bind to a specific network interface address
- honor rapidpro constants for content-type
- Add burst sms handler / sender (Australia / New Zealand)
- set expiration of sent sets in redis
- update line channel to use v2 of API
- add messangi channel
- remove unacked, that's part of celery's job
- update celery queuing to new kombu format
- write UUID fields for incoming messages
- implement unified webhook endpoint for whatsapp
- Implement new WhatsApp API for sending
- Honor x-forwarded-path header for twilio signatures
- Make sure the messageid is unique for multiple part messages for Dartmedia
- Decode & in Twitter message bodies
- Accept Hub9/Dart encrypted phonenumber identifier and save then as external scheme
- Update .gitignore
- Update .gitignore
- Update readme, formatting
- Add more lines to show annotation format
- More lines.. why not
- Update changelog, remove spurious version
- do not log illegal methods or 404s