Connect Zammad to AVM Fritzbox

Hi there, since AVM Fritzbox is not native a real PBX with CTI-connection… I wanted to know if it would be possible to connect Zammad to this library and get caller-id and other stuff:

What do you think?

Zammad is written in ruby, so this python lib might not be very helpful, except it can trigger webhooks?!

I did not build a CTI integration by myself yet, but it looks like that the these integrations are webhook based.

For example, you can find out a lot by searching for existing integrations in the zammad codebase, e.g. sipgate:

zammad/app/controllers/integration/sipgate_controller.rb at 70482ac6f520dc3cffa3affcd026db7c0b67b4aa · zammad/zammad · GitHub

It seems that the controller is reacting to incoming requests. So you might need to search for some webhook possibility in your fritz box. Not sure if it exists. But if you can trigger a request to zammad on a ingoing+outgoing call with the current state of the call and also some endpoints to gather information about the user, then it might be possible.

After an incoming call request is happening the parameters are getting forwarded to the CTI backend drivers in zammad:
zammad/app/models/cti/driver at 70482ac6f520dc3cffa3affcd026db7c0b67b4aa · zammad/zammad · GitHub

Looks like based on the status of the call it will trigger further steps.

So the complete integration seems to be following files for sipgate:

If you also want to make it configurable, then you might take a look at the frontend files which make the settings configurable (optional):

And you would need a migration to save your config

If you are into testdriven development and there is also a test for it:

I believe using the generic CTI integration would be easier as you wouldn’t have to adjust code:

You still will have to build a connector in between Fritzbox and Zammad.