# Release v0.8.3-3
#### Info
- Release Date: May 31, 2023.
- Deployed in Helm chart release 0.1.29

#### Bug fixes
- Add logging for error handling when an invalid IP/netmask has been provisioned for a carrier
- Fix twilio pre-seed data, previously had an invalid CIDR
- One account could potentially use speech creds from a different account
- Carrier gateways are added as inactive by default which caused confusion and errors sending outbound registrations

#### Manually uprading on AWS
**Important note:** Release 0.8.3-3 has some important bug fixes (see above) for issues that you may be experiencing on a 0.8.3 deployment.  If you have deployed 0.8.3 using the AWS marketoplace offering we recommend you perform the manual procedure described below to upgrade to 0.8.3-3.

First, you will need to ssh into the EC2 instance as the admin user, using the keypair that you provisioned when you launched the instance.   Then change into each directory under `/home/admin/apps` (except jambonz-webapp) and do the following
```bash
git fetch
git checkout v0.8.3-3
npm ci
```

After that, change into `/home/admin/apps/jambonz-webapp` and do this
```bash
git stash save
git fetch
git checkout v0.8.3-3
git stash pop
npm ci
npm run build
```
Finally:
```bash
pm2 restart /home/admin/apps.ecosystem.config.js
```

# Release v0.8.3-1
#### Info
- Release Date: May 29, 2023.
- Deployed in Helm chart release 0.1.28

#### New Features
- [Additional routing logic](https://github.com/jambonz/sbc-outbound/issues/85) for outbound calls.  Default to sending calls out the same carrier that delivered the associated inbound call if no other instructions are provided.
- List phone numbers in sorted order in portal
- Show seconds in Recent calls in portal

#### Bug fixes
- Fix intermittent bug where downloaded pcap file is empty
- Fix pause/resume commands for siprec client sessions
- Fix for carrier selection on dial based on calling number
- Handle missing callerId property for anonymous calls

#### SQL changes
None.

# Release v0.8.3
#### Info
- Release Date: May 15, 2023
- Deployed in Helm chart release 0.1.28

#### New Features
- When creating an outbound sip gateway you can additionally specify transport protocol (udp, tcp, tls, tls/srtp); previously only udp was supported [#166](https://github.com/jambonz/jambonz-api-server/pull/166), [#82](https://github.com/jambonz/sbc-outbound/pull/82), [#83](https://github.com/jambonz/sbc-outbound/pull/83)
- Added application trace view to Recent Calls detail in jambonz portal
- Added real-time status of trunk registration (and pcap download) to jambonz portal
- Added support for choosing between multiple outbound carriers based on digit match or regex pattern
- Added support for [Cisco Network Based Recording](https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/voice/cube/configuration/cube-book/voi-ntwk-based.html) for agent assist-type scenarios
- Microsoft custom voices can now be used on a per-say basis
- New [Twilio IP ranges](https://www.twilio.com/en-us/changelog/upcoming-changes-to-twilio-voice-media-ip-addresses) included when using Twilio as a predefined carrier
- Add support for anchoring media on dial verb [#304](https://github.com/jambonz/jambonz-feature-server/pull/304)
- createCall: add a default behavior if the trunk isn't defined [#230](https://github.com/jambonz/jambonz-feature-server/pull/230)
- Centralize configs in the code for easier maintenance [#310](https://github.com/jambonz/jambonz-feature-server/pull/310)
- Add callerName to rest_dial and dial verb [#312](https://github.com/jambonz/jambonz-feature-server/pull/312)
- Improved logging of commands sent over websocket to assist troubleshooting
- System settings in jambonz portal now shows DNS names for portal, grafana, and sip endpoint [#162](https://github.com/jambonz/jambonz-api-server/pull/162)
- Add "Forgot password" feature to portal [#218](https://github.com/jambonz/jambonz-webapp/pull/218)

#### Bug fixes
- response to siprec invite should have a:recvonly if offer had a:sendonly
- based on more testing default google to command_and_search for gather and latest_long for transcribe
- Handling siprec caller and callee null [#308](https://github.com/jambonz/jambonz-feature-server/pull/308)
- fix bug in wss requestor in the case where mysql cache is used [#319](https://github.com/jambonz/jambonz-feature-server/pull/319)
- fix issue where multiple gathers running simultaneously [#321](https://github.com/jambonz/jambonz-feature-server/pull/321)
- Answering machine detection (amd) supports languages other than en-US [#322](https://github.com/jambonz/jambonz-feature-server/pull/322)
- fix nvidia speech recognition [#345](https://github.com/jambonz/jambonz-feature-server/pull/345)
- Fix REST dial timeout [#351](https://github.com/jambonz/jambonz-feature-server/pull/351)
- Prevent API keys from being cached by the browser [#143](https://github.com/jambonz/jambonz-api-server/pull/143)
- Prevent excessive login attempts to the portal [#144](https://github.com/jambonz/jambonz-api-server/pull/144)
- Improve filtering of recent calls [#153](https://github.com/jambonz/jambonz-api-server/pull/153)
- Change API response text to avoid revealing user's data [#161](https://github.com/jambonz/jambonz-api-server/pull/161)
- Fix admin setting issue [#168](https://github.com/jambonz/jambonz-api-server/pull/168)
- Fix the webapp blocking account name if exists in another service provider [#229](https://github.com/jambonz/jambonz-webapp/pull/229)
- Update active sip gateway [#235](https://github.com/jambonz/jambonz-webapp/pull/235/files)
- Account users should be able to add other account users [#238](https://github.com/jambonz/jambonz-webapp/pull/238)
- Fix X-Authenticated-User missing between SBC & FS [#90](https://github.com/jambonz/sbc-inbound/pull/90)

#### SQL changes

The following schema changes were made in this release:
```
SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE `voip_carriers` ADD COLUMN `register_status` VARCHAR(4096);
ALTER TABLE `sbc_addresses` ADD COLUMN `last_updated` DATETIME;
ALTER TABLE `sbc_addresses` ADD COLUMN `tls_port` INTEGER;
ALTER TABLE `sbc_addresses` ADD COLUMN `wss_port` INTEGER;
CREATE TABLE system_information
(
domain_name VARCHAR(255),
sip_domain_name VARCHAR(255),
monitoring_domain_name VARCHAR(255)
);
DROP TABLE IF EXISTS `lcr_routes`;
DROP TABLE IF EXISTS `lcr_carrier_set_entry`;
CREATE TABLE lcr_routes
(
lcr_route_sid CHAR(36),
lcr_sid CHAR(36) NOT NULL,
regex VARCHAR(32) NOT NULL COMMENT 'regex-based pattern match against dialed number, used for LCR routing of PSTN calls',
description VARCHAR(1024),
priority INTEGER NOT NULL COMMENT 'lower priority routes are attempted first',
PRIMARY KEY (lcr_route_sid)
);
CREATE TABLE lcr
(
lcr_sid CHAR(36) NOT NULL UNIQUE ,
name VARCHAR(64) COMMENT 'User-assigned name for this LCR table',
is_active BOOLEAN NOT NULL DEFAULT 1,
default_carrier_set_entry_sid CHAR(36) COMMENT 'default carrier/route to use when no digit match based results are found.',
service_provider_sid CHAR(36),
account_sid CHAR(36),
PRIMARY KEY (lcr_sid)
);
CREATE TABLE lcr_carrier_set_entry
(
lcr_carrier_set_entry_sid CHAR(36),
workload INTEGER NOT NULL DEFAULT 1 COMMENT 'represents a proportion of traffic to send through the associated carrier; can be used for load balancing traffic across carriers with a common priority for a destination',
lcr_route_sid CHAR(36) NOT NULL,
voip_carrier_sid CHAR(36) NOT NULL,
priority INTEGER NOT NULL DEFAULT 0 COMMENT 'lower priority carriers are attempted first',
PRIMARY KEY (lcr_carrier_set_entry_sid)
);
CREATE INDEX lcr_sid_idx ON lcr_routes (lcr_sid);
ALTER TABLE lcr_routes ADD FOREIGN KEY lcr_sid_idxfk (lcr_sid) REFERENCES lcr (lcr_sid);
CREATE INDEX lcr_sid_idx ON lcr (lcr_sid);
ALTER TABLE lcr ADD FOREIGN KEY default_carrier_set_entry_sid_idxfk (default_carrier_set_entry_sid) REFERENCES lcr_carrier_set_entry (lcr_carrier_set_entry_sid);
CREATE INDEX service_provider_sid_idx ON lcr (service_provider_sid);
CREATE INDEX account_sid_idx ON lcr (account_sid)
ALTER TABLE lcr_carrier_set_entry ADD FOREIGN KEY lcr_route_sid_idxfk (lcr_route_sid) REFERENCES lcr_routes (lcr_route_sid);
ALTER TABLE lcr_carrier_set_entry ADD FOREIGN KEY voip_carrier_sid_idxfk_3 (voip_carrier_sid) REFERENCES voip_carriers (voip_carrier_sid);
SET FOREIGN_KEY_CHECKS=1;
```

#### Environment variables
A new environment variable `JAEGER_BASE_URL` was added to the api-server process.  This provides the base url for the jaeger service which is needed to retrieve application traces that are now displayed in the jambonz portal.  In a jambonz-mini deployment, for instance, the ecosystem.config.js file should have:
```
      JAEGER_BASE_URL: 'http://127.0.0.1:16686',
```

Similar changes would be needed for a jambonz cluster deployment (though the base url would not be 127.0.0.1).  For Kubernetes deployments, the [helm chart](https://github.com/jambonz/helm-charts) version 0.1.26 has been updated with this change.

#### Availability
- Available shortly on AWS Marketplace
- Deploy to Kubernetes using [this Helm chart](https://github.com/jambonz/helm-charts)

#### Contributors

Thanks to all who contributed to this release!

- [avoylenko](https://github.com/avoylenko)
- [paulotelles](https://github.com/paulotelles)
- [Catharsis68](https://github.com/Catharsis68)
- [xquanluu](https://github.com/xquanluu)
- [davehorton](https://github.com/davehorton)
- [EgleHelms](https://github.com/EgleHelms)
- [ajukes](https://github.com/ajukes)
- [two56](https://github.com/two56)
- [vdharashive](https://github.com/vdharashive)

**Questions?** Contact us at <a href="mailto:support@jambonz.org">support@jambonz.org</a>