Sign inSign up

ictinnovations/ictcore

By ictinnovations

Updated about 1 month ago

PHP unified communications framework. One REST API over voice, fax, SMS and email.

Image
0

1.3K

ictinnovations/ictcore repository overview

ICTCore

You want your application to place a call, drop a voicemail, send a fax and text the result to a manager. You do not want to learn FreeSWITCH dialplan XML, Kannel config and Sendmail routing to get there.

That gap is what ICTCore fills. It's a PHP communications framework that sits between your business logic and the switches, and exposes the whole thing as a REST API. You write the scenario, ICTCore deals with the telephony.

Licensed MPL-2.0.

The idea worth stealing

Most telephony stacks treat voice, fax, SMS and email as four separate products that happen to be installed on the same box. ICTCore treats them as one vocabulary. A transmission is a transmission whether it's a call or a fax, so an inbound fax can trigger an email, a finished call can trigger an SMS, and you write that rule once instead of three times.

That's the part that makes it a framework rather than a bundle, and it's the reason projects keep getting built on it:

Running it

docker run -d --name ictcore \
  -p 8080:80 -p 8443:443 \
  -p 5060:5060/udp -p 5060:5060/tcp \
  -p 16384-16484:16384-16484/udp \
  ictinnovations/ictcore:latest

Give it a minute or two on first boot. The container provisions MariaDB, loads the schema, generates a TLS certificate and starts FreeSWITCH before the API answers. Then http://localhost:8080/api/ is live.

Useful environment variables: ICTCORE_HOST for the hostname the API advertises, DB_HOST / DB_PORT / DB_NAME / DB_USER / DB_PASS to point at an external MariaDB instead of the bundled one, and FS_ESL_PASSWORD for the FreeSWITCH event socket. Worth mounting: /usr/ictcore/data, /usr/ictcore/log, and /var/lib/mysql if you keep the bundled database.

What this tag is

Rocky Linux 8 with FreeSWITCH 1.10.12, PHP 7.4, Apache and MariaDB wired together, rebuilt from the GitHub repository on every push. The build only publishes after a smoke test boots the container, waits for the REST API, checks the event socket is listening and confirms the schema landed, so a tag that exists is a tag that started.

The old January 2018 CentOS 7 tag is gone. CentOS 7 stopped receiving updates in June 2024, so there was no honest way to keep offering it.

No dashboard here

ICTCore is a framework, so this image gives you an API and nothing to log into. There's nothing to screenshot here, because the interface belongs to whatever you build on top.

If you want a finished product with a web interface, pull ictinnovations/ictfax or ictinnovations/ictdialer. Both build this same stack and add a dashboard on top, and it looks like this:

ICTFax dashboard, built on ICTCore

Every counter on that page is an ICTCore transmission. The job list underneath is the same data the REST API returns:

Outbound job list

Building it yourself

git clone https://github.com/ictinnovations/ictcore.git
cd ictcore
docker build -f docker/Dockerfile -t ictcore:dev .

Where to read more

Documentation and the developer guide are at ictcore.org. Gateways currently supported are FreeSWITCH for voice and fax, Kannel for SMS, and Sendmail for email.

Built and maintained by ICT Innovations.

Tag summary

Content type

Image

Digest

sha256:8b205d66a

Size

250.4 MB

Last updated

about 1 month ago

docker pull ictinnovations/ictcore