- Make 'only' keyword triggers ignore punctuation
- Make check_campaigns_task lock on the event fires that it will queue
- Break up flow event fires into sub-batches of 500
- Ignore and ack incoming messages from Android relayer that have no number
- Add match_type option to triggers so users can create triggers which only match when message only contains keyword
- Allow Africa's talking to retry sending message
- Allow search on the triggers pages
- Clear results for analytics when user removes a flow run
- Make Msg.get_sync_commands more efficent
- Fix open range airtime transfers
- Fix multiple Android channels sync
- Fix parsing of macrokiosk channel time format
- Ensure that our select2 boxes show "Add new" option even if there is a partial match with an existing item
- Switch to new translatable fields and remove old Broadcast fields
- Add Firebase Cloud messaging support for Android channels
- Migration to populate new translatable fields on old broadcasts. This migration is slow on a large database so it's recommended that large deployments fake it and run it manually.
- Add new translatable fields to Broadcast and ensure they're populated for new stuff
- Fix autocomplete for items containing digits or other items
- Make autocomplete dropdown disappear when user clicks in input box
- Replace usages of "SMS" with "message" in editor
- Allow same subflow to be called without pause in between
- Fix exporting messages by a label folder
- Improve performance of org export page for large orgs
- Make it easier to enable/disable debug toolbar
- Increase channel logging for requests and responses
- Change contact api v1 to insert nonexistent fields
- Graceful termination of USSD sessions
- Don't show deleted flows on list page
- Convert timestamps sent by MacroKiosk from local Kuala Lumpur time
- Move initial IVR expiration check to status update on the call
- Hide request time in channel log if unset
- Check the existance of broadcast recipients before adding
- Voice flows import should never allow expirations longer than 15 mins
- Fix parse location to correctly use the tokenizized text if the location was matched for the entire text
- Use updates instead of full Channel saves() on realyer syncs, only update when there are changes
- Use flow starts for triggers that operate on groups
- Handle throttling errors from Nexmo when using API to add new numbers
- Convert campaign event messages to HSTORE fields
- Add MACROKIOSK channel type
- Show media for MMS in simulator
- Fix send all bug where we append list of messages to another list of messages
- Flows endpooint should allow filtering by modified_on
- More vertical form styling tweaks
- Add flow link on subflow rulesets in flows
- Fix styling on campaign event modal
- Update to latest Raven
- Make default form vertical, remove horizontal to vertical css overrides
- Add flow run search and deletion
- Hangup calls on channels release
- Allow message exports by label, system label or all messages
- Fix for double stacked subflows with immediate exits
- Archiving a flow should interrupt all the current runs
- Display webhook results on contact history
- Clean up template tags used on contact history
- Allow broadcasts to be sent to all urns belonging to the specified contacts
- Data migration to populate broadcast send_all field
- Add webhook events trim task with configurable retain times for success and error logs
- Add send_all broadcast field
- Remove non_atomic_gets and display message at /api/v1/ to explain API v1 has been replaced
- Add squashable model for label counts
- Split system label functionality into SystemLabel and SystemLabelCount
- Link subflow starts in actions
- Allow wait to wait in flows with warning
- Add new has email test, contains phrase test and contains only phrase test
- Migration to populate FlowNodeCount shouldn't include test contacts
- Add migration to populate FlowNodeCount
- Migration to clear no-longer-used flow stats redis keys
- Replace remaining cache-based flow stats code with trigger based FlowNodeCount
- Fix intermittently failing Twilio test
- make sure calls have expiration on initiation
- Update to latest smartmin
- Add redirection for v1 endpoints
- Fix webhook docs
- Fix MsgCreateSerializer not using specified channel
- Test coverage
- Fix test coverage issues caused by removing API v1 tests
- Ensure surveyor users still have access to the API v2 endpoint thats they need
- Remove djangorestframework-xml
- Restrict API v1 access to surveyor users
- Block all API v2 writes for suspended orgs
- Remove all parts of API v1 not used by Surveyor
- Prioritize msg handling over timeotus and event fires
- Remove hamlcompress command as deployments should use regular compress these days
- Fix not correctly refreshing dynamic groups when a URN is removed
- Allow searching for contacts with any value for a given field
- Fix sidebar nav LESS so that level2 lists don't have fixed height and separate scrolling
- Unstop a contact when we get an explicit user interaction such as follow
- Fix possible race condition between receiving and handling messages
- Do away with scheme for USSD, will always be TEL
- Make sure events are handled properly for USSD
- Do not specify to & from when using reply_to
- Update JunebugForm for editing Junebug Channel + config fields
- Log request time on channel log success
- Fix test, fix template tags
- Change request times to be in ms instead of seconds
- Block on handling incoming msgs so we dont process them forever away
- Include Viber channels in new conversation trigger form channel choices
- Don't use cache+calculations for flow segment counts - these are pre-calculated in FlowPathCount
- Do not include active contacts in flows unless user overrides it
- Clean up middleware imports and add tests
- Feedback to user when simulating a USSD channel without a USSD channel connected
- Expand base64 charset, fix decode validity heuristic
- Deal with Twilio arbitrarily sending messages as base64
- Allow configuration of max text size via settings
- Set higher priority when sending responses through Kannel
- Do not add stopped contacts to groups when importing
- Fix an entire flow start batch failing if one run throws an exception
- Limit images file size to be less than 500kB
- Send Facebook message attachments in a different request as the text message
- Include skuid for open range tranfertto accounts
- Fix exception when handling Viber msg with no text
- Migration to remove no longer used ContactGroup.count
- Fix search queries like 'foo bar' where there are more than one condition on name/URN
- Add indexes for Contact.name and ContactURN.path
- Replace current omnibox search function with faster and simpler top-25-of-each-type approach
- Fix Line, FCM icons, add Junebug icon
- Render missing field and URN values as "--" rather than "None" on Contact list page
- Add ROLE_USSD
- Add Junebug USSD Channel
- Fix Vumi USSD to use USSD Role
- Archive triggers that do not have a contact to send to
- Disable sending of messages for blocked and stopped contacts
- Add support for outbound media on reply messages for Twilio MMS (US, CA), Telegram, and Facebook
- Do not throw when viber sends us message missing the media
- Optimizations around Contact searching
- Send flow UUID with webhook flow events
- Allow configuration of max message length to split on for External channels
- Use brand key for evaluation instead of host when determining brand
- Add red rabbit type (hidden since MT only)
- Fix flow results exports for broadcast only flows
- Log Nexmo media responses without including entire body
- Dont encode to utf8 for XML and JSON since they expect unicode
- Optimize contact searching when used to determine single contact's membership
- Use flow system user when migrating flows, avoid list page reorder after migrations
- reduce number of lookup to DB
- Add test case for search URL against empty field value
- Fix sending vumi messages initiated from RapidPro without response to
- Improvements to external channels to allow configuration against JSON and XML endpoints
- Exclude test contacts from flow results
- Update to latest smartmin to fix empty string searching
- Allow USSD flows to start someone else in a flow
- Include reply to external_id for Vumi channel
- Add ID column to result exports for anon orgs
- Deactivate runs when releasing flows
- Fix urn display for call log
- Increased send and receive channel logging for Nexmo, Twilio, Twitter and Telegram
- Allow payments through Bitcoins
- Include TransferTo account currency when asking phone info to TransferTo
- Don't create inbound messages for gather timeouts, letting calls expire
- Don't show channel log for inactive channels on contact history
- Upgrade to latest smartmin which changes created_on/modified_on fields on SmartModels to be overridable
- Uniform call and message logs
- Add ID column to anonymous org contact exports, also add @contact.id field in message context
- Fix counts for channel log elements
- Only have one link on channel page for sending log
- Attempt to determine file types for msg attachments using libmagic
- Deactivate runs on hangups, Keep ivr runs open on exit
- Add log for nexmo media download
- Add new perf_test command to run performance tests on database generated with make_test_db
- Fix preferred channels for non-msg channels
- Make migrations to populate new export task fields non-atomic
- Add indexes for admin boundaries and aliases
- Nexmo: make sure calls are ended on hangup, log hangups and media
- Fix inbound calls on Nexmo to use conversation_uuid
- Style tweaks for zapier widget
- Use shorter timeout for IVR
- Issue hangups on expiration during IVR runs
- Catch all exceptions and log them when initiating call
- Fix update status for Nexmo calls
- Add channel session log page
- Use brand variable for zaps to show
- Additional logging for nexmo
- Increase non-overlap on timeout queueing, never double queue single timeout
- Fix broken timeout handling when there is a race
- Make field_keys a required parameter
- Speed up the contact import by handling contact update at once after all the fields are set
- Add channel log for Nexmo call initiation
- Fix import-geojson management command
- Fix Contact.search so it doesn't evaluate the base_query
- Enable searching in groups and blocked/stopped contacts
- Fix absolute positioning for account creation form
- Add Line channel icon in fonts
- Add data migrations to update org config to connect to Nexmo
- Add Malawi as a country for Africa's Talking
- Widen pages to browser width so more can fit
- Fix the display of URNs on contact list page
- Fix searching of Nexmo number on connected accounts
- Fix channel countries being duplicated for airtime configuration
- Add make_sql command to generate SQL files for an app, reorganize current SQL reference files
- Added SquashableModel and use it for all squashable count classes
- Add support for Nexmo IVR
- Log IVR interactions in Channel Log
- Fix to make label of open ended response be All Response even if there is timeout on the ruleset
- Data migration to rename category for old Values collected with timeouts
- Add 256 keys to @extra, also enforce ordering so it is predictible which are included
- Make fetching flow run stats more efficient and expose number of active runs on flow run endpoint
- Migration to populate session on msg and ended_on where it is missing
- Offline context per brand
- Add Junebug channel type
- Better base styling for dev project
- Pass charset parameter to Kannel when sending unicode
- Zero out minutes, seconds, ms for campaign events with set delivery horus
- Add other URN types to contact context, return '' if missing, '*' mask for anon orgs
- Make sure Campaigns export base_language for simple message events, honor on import
- Change ansible command run on vagrant up from syncdb to migrate
- Remove no longer needed django-modeltranslation
- Keep up to 256 extra keys from webhooks instead of 128
- Add documentation of API rate limiting
- Make styling variables uniform across branding
- Make brand styling optional
- Add support for subflows over IVR
- Fix searching for Twilio numbers, add unit tests
- Fix API v1 run serialization when step messages are purged
- Adds more substitutions from accented characters to gsm7 plain characters
- Populate ended_on for ivr calls
- Add session foreign key to Msg model
- Fix bug in starting calls from sessions
- Remove flow from ChannelSession, sessions can span many runs/flows
- Remove superfluous channelsession.parent
- Migration to update existing twiml apps with a status_callback, remove api/v1 references
- Various tweaks to wording and presentation around custom SMTP email config
- Allow orgs to set their own SMTP server for outgoing emails
- Return better error message when To number not passed to Twilio handler
- Exclude Flow webhook events from retries (we try once and forget)
- Don't pass channel in webhook events if we don't know it
- Use JsonResponse and response.json() consistently
- Replace json.loads(response.content) with response.json() which properly decodes on Python 3
- Improve performance of contact searches by location by fetching locations in separate query
- Update pyparsing to 2.1.10
- Update to new django-hamlpy
- Display flow runs exits on the contact timeline
- Fix Travis settings file for Python 3
- Fix more Python 3 syntax issues
- Fix RecentMessages no longer supporting requests with multiple rules, and add tests for that
- Use print as function rather than statement for future Python 3 compatibility
- Do not populate contact name for anon orgs from Viber
- Add is_squashed to FlowPathCount and FlowRunCount
- Updates to using boto3, if using AWS for storing imports or exports you'll need to change your settings file:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
- Allow for the creation of Facebook referral triggers (opt-in on FB)
- Allow for whitelisting of domains for Facebook channels
- New contact field editing UI with Intercooler modals
- Update RecentMessages view to use new recent messages model
- Remove now unused indexes on FlowStep
- Adds data migration to populate FlowPathRecentStep from existing Flow Steps
- Introduce new model, FlowPathRecentStep that tracks recent steps from one flow node to another. This will replace the rather expensive index used to show recent flow activity on a flow path.
- Log any exceptions encountered in Celery tasks to Raven
- Tell user to get pages_messaging_subscriptions permission for their FB app
- Replace unicode non breaking spaces with a normal space for GSM7 encoding (Kannel only)
- Add migrations for custom indexes (existing installs before v3 should fake these)
- fix styling on loader ball animation
- Fix issue causing flow run table on flow dashboard to be very slow if a flow contained many responses
- Refactor JSON responses to use native Django JSONResponse
- Dont use proxy for Dart Media and Hub9, expose IPs to whitelist
- Fixes DartMedia channel for short codes
- Remove django-celery as it is unneeded, also stop saving Celery tombstones as we now store all task state (ContactImport for example) directly in models
- IMPORTANT: This release resets all Temba migrations. You need to run the latest migrations from a version preceding this one, then fake all temba migrations when deploying:
% python manage.py migrate csv_imports
% python manage.py migrate airtime --fake
% python manage.py migrate api --fake
% python manage.py migrate campaigns --fake
% python manage.py migrate channels --fake
% python manage.py migrate contacts --fake
% python manage.py migrate flows --fake
% python manage.py migrate ivr --fake
% python manage.py migrate locations --fake
% python manage.py migrate msgs --fake
% python manage.py migrate orgs --fake
% python manage.py migrate public --fake
% python manage.py migrate reports --fake
% python manage.py migrate schedules --fake
% python manage.py migrate triggers --fake
% python manage.py migrate ussd --fake
% python manage.py migrate values --fake
% python manage.py migrate
- Django 1.10
- Guardian 1.4.6
- MPTT 0.8.7
- Extensions 1.7.5
- Boto 2.45.0
- Django Storages 1.5.1