Skip to content

Commit f7b6236

Browse files
committed
docs: Sprint 40 INT-10 CHANGELOG v1.36.0 + TODO INT-10 marked done
1 parent 14ee7c5 commit f7b6236

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

CHANGELOG.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,31 @@ This project adheres to [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
99
## [Unreleased]
1010

1111
### Planned — Next Up
12-
- Business workflow integrations (FreePBX↔Zammad, SuiteCRM↔Odoo, Zabbix↔Mattermost, etc.)
12+
- Business workflow integrations (SuiteCRM↔Odoo, Zabbix↔Mattermost, etc.)
13+
14+
---
15+
16+
## [1.36.0] — 2026-03-04
17+
18+
### Added — Sprint 40: INT-10 FreePBX → Zammad auto-ticket creation (phone call webhook)
19+
20+
**Ansible (`it-stack-ansible`):**
21+
- `roles/freepbx/tasks/zammad-webhook.yml` — INT-10 idempotent 7-step webhook playbook: assert Zammad tickets API + users API, set facts, deploy `freepbx-zammad-webhook.conf.j2` Asterisk dialplan, deploy `freepbx-zammad-webhook.py.j2` AGI script (mode 0750), flush handlers, stat assert
22+
- `roles/freepbx/templates/freepbx-zammad-webhook.conf.j2` — Asterisk config: `[zammad-webhook-globals]`, `[macro-zammad-phone-ticket]` (AGI with create_ticket args), `[macro-zammad-call-complete]`, `[zammad-inbound-notify]` context, `[zammad-outbound-complete]` hook
23+
- `roles/freepbx/templates/freepbx-zammad-webhook.py.j2` — Python AGI: `create_ticket()` POSTs call metadata to Zammad `/api/v1/tickets` (type=phone, tags=freepbx,cti-int10); `update_ticket()` appends duration note via ticket article
24+
- `roles/freepbx/tasks/main.yml` — added `zammad-webhook.yml` import guarded by `freepbx_enable_zammad_webhook | default(true)`
25+
- `roles/zammad/tasks/freepbx-cti.yml` — INT-10 idempotent 7-step Zammad-side playbook: assert FreePBX web + REST API, set facts, deploy `zammad-freepbx-cti.json.j2`, register CTI phone channel via Zammad API (`cti_generic_api` adapter, inbound AMI host/port, outbound `/api/rest.php`), flush handlers, stat assert
26+
- `roles/zammad/templates/zammad-freepbx-cti.json.j2` — JSON channel config: `adapter: cti_generic_api`, inbound AMI options, outbound FreePBX REST URL + credentials
27+
- `roles/zammad/tasks/main.yml` — added `freepbx-cti.yml` import guarded by `zammad_enable_freepbx_cti | default(true)`
28+
29+
**Zammad integration test (`it-stack-zammad`):**
30+
- `docker/docker-compose.integration.yml` — added `zammad-int-mock` WireMock 3.x service (port 8027), added `FREEPBX_URL`, `FREEPBX_AMI_HOST`, `FREEPBX_AMI_PORT`, `FREEPBX_AMI_USER`, `FREEPBX_AMI_PASSWORD` to `x-zammad-int-env`, header updated with INT-10 notes
31+
- `tests/labs/test-lab-11-05.sh` — added Phase 8: WireMock health check, FreePBX `/api/rest.php` originate + `/admin/config.php` stubs, originate response verify, `FREEPBX_*` env var assertions in railsserver, railsserver→WireMock reach, Zammad CTI `cti_generic_api` channel registration via API; updated header + banner + results to INT-06 + INT-10
32+
- `.github/workflows/ci.yml` — lab-05-smoke renamed to include INT-10, added WireMock wait step (port 8027)
33+
34+
**FreePBX integration test (`it-stack-freepbx`):**
35+
- `docker/docker-compose.integration.yml` — header updated to credit INT-09 + INT-10
36+
- `.github/workflows/ci.yml` — lab-05-smoke renamed to `Lab 10-05 -- FreePBX Advanced Integration (INT-09 SuiteCRM CTI + INT-10 Zammad phone tickets)`
1337

1438
---
1539

docs/IT-STACK-TODO.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ All 5 repos have:
398398

399399
### Business Workflow Integrations
400400
- [x] FreePBX ↔ SuiteCRM (click-to-call, call logging) ← **INT-09 DONE** (Sprint 39: suitecrm-cti.yml + freepbx-cti.yml + AGI script + CTI WireMock stubs + integration test)
401-
- [ ] FreePBX ↔ Zammad (automatic phone tickets)
401+
- [x] FreePBX ↔ Zammad (automatic phone tickets) ← **INT-10 DONE** (Sprint 40: zammad-webhook.yml + freepbx-cti.yml + AGI script + WireMock + Zammad CTI channel API)
402402
- [ ] FreePBX ↔ FreeIPA (extension provisioning from directory)
403403
- [ ] SuiteCRM ↔ Odoo (customer data sync)
404404
- [ ] SuiteCRM ↔ Nextcloud (calendar sync)

0 commit comments

Comments
 (0)