Horace Miles created OPENMEETINGS-2810:
------------------------------------------
Summary: OM Sip Integration
Key: OPENMEETINGS-2810
URL: https://issues.apache.org/jira/browse/OPENMEETINGS-2810
Project: Openmeetings
Issue Type: Bug
Components: VoIP/SIP
Affects Versions: 7.2.0
Reporter: Horace Miles
Assignee: Maxim Solodovnik
Here is a **developer-focused version with sequence flow** you can send.
---
# Subject
OpenMeetings 7.2.0 on Java 17 with Asterisk 18: SIP bridge leg never
auto-originates, only `ConfbridgeList` is sent over AMI
Hello OpenMeetings team,
I am troubleshooting SIP conference integration with OpenMeetings 7.2.0 and
Asterisk 18.x. I have narrowed the issue down quite a bit and wanted to provide
a clean technical report.
## Environment
* OpenMeetings: 7.2.0
* Java: OpenJDK 17
* Asterisk: 18.x
* SIP stack: PJSIP
* OS: Ubuntu Linux
* AMI connection: localhost `127.0.0.1:5038`
* AMI user: `openmeetings`
## Problem summary
OpenMeetings successfully connects to Asterisk AMI and repeatedly sends
`ConfbridgeList` for the room conference number, but it never sends the
expected `Originate` action that would create the OpenMeetings SIP bridge leg.
As a result, the OM-side participant never joins the conference automatically
when the moderator enters the room.
## What works
The Asterisk side is working.
I can manually create the OM bridge leg with:
```bash
sudo asterisk -rx "channel originate Local/40011@rooms-omsip application Wait
60"
```
That successfully produces this in `confbridge list 40011`:
```text
Local/40011@rooms-omsip-... omsip_user
PJSIP/voipms-... sip_user
```
So the following are confirmed good:
* ConfBridge itself
* the `omsip_user` profile
* the dialplan logic for `rooms-omsip`
* coexistence of external SIP caller + OM bridge leg in the same conference
## Dialplan currently in use
```asterisk
[rooms-originate]
exten => _400XX!,1,Confbridge(${EXTEN},default_bridge,sip_user)
same => n,Hangup()
[rooms-omsip]
exten =>
_400XX!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail)
same => n(ok),Confbridge(${EXTEN},default_bridge,omsip_user)
same => n(notavail),Hangup()
```
## What AMI debug shows
With:
```asterisk
manager set debug on
```
I consistently see this pattern:
```text
Manager 'openmeetings' logged on
Action: Challenge
Action: Login
Action: CoreSettings
Action: Command (core show version)
Action: ConfbridgeList conference:40011
Action: ConfbridgeList conference:40011
Action: ConfbridgeList conference:40011
Manager 'openmeetings' logged off
```
This cycle repeats continuously.
What I do **not** see at any point is:
```text
Action: Originate
Channel: Local/40011@rooms-originate
```
So OpenMeetings is clearly talking to AMI, but it is only polling conference
state and never creating the SIP bridge leg.
## Class inspection
I inspected the compiled classes in my installed 7.2.0 jars and found the
relevant SIP code paths.
`SipManager.class` contains references to:
```text
OriginateAction
Local/%s@rooms-originate
ConfbridgeListAction
ManagerConnection
ManagerConnectionFactory
```
Relevant classes present in the installation include:
```text
org/apache/openmeetings/core/sip/SipManager.class
org/apache/openmeetings/core/sip/SipStackProcessor.class
org/apache/openmeetings/core/sip/ISipCallbacks.class
org/apache/openmeetings/db/entity/user/AsteriskSipUser.class
org/apache/openmeetings/web/room/menu/SipDialerDialog.class
org/apache/openmeetings/web/room/RoomPanel.class
```
This suggests the originate code is compiled in, but not being triggered in my
runtime path.
## Sequence flow as observed
### Expected flow
```text
Moderator enters room
->
OpenMeetings room/moderator logic detects moderated room state
->
SipManager issues AMI OriginateAction
->
Asterisk creates Local/40011@rooms-originate
->
Dialplan joins ConfBridge
->
OM bridge leg appears as omsip_user
```
### Actual flow
```text
Moderator enters room
->
OpenMeetings connects to AMI
->
AMI Login succeeds
->
OpenMeetings sends CoreSettings and core show version
->
OpenMeetings repeatedly sends ConfbridgeList for 40011
->
AMI session logs off
->
reconnect / repeat
```
There is never an `OriginateAction`.
## Additional context
I originally saw `asterisk-java` warnings related to
`ChallengeResponseFailedEvent` parsing during heavy SIP scanner traffic. I have
since implemented fail2ban and IP blocking, so the scanner noise is now much
lower, but the core problem remains: OpenMeetings still does not send
`Originate`.
I also downgraded from Java 21 to Java 17, since OM 7.2.0 is aligned with Java
17. That stabilized some unrelated media behavior, but did not change the
missing originate behavior.
## Main question for the developers
Could you please clarify:
1. Under what exact condition does `SipManager` issue `OriginateAction`?
2. Is the originate path supposed to happen automatically when a moderator
enters a moderated room?
3. Is the originate path only triggered through `SipDialerDialog` / manual SIP
dialing UI?
4. Is there an additional room flag, SIP setting, or DB state required before
automatic originate is allowed?
5. Is the repeated AMI logout/login cycle normal, or does it indicate the SIP
manager component is restarting/failing?
## Most important point
The issue does **not** appear to be on the Asterisk side, because manual Local
originate into the OM profile works correctly. The missing behavior is
specifically that OpenMeetings never sends `Originate` over AMI.
If helpful, I can also provide:
* full AMI debug trace
* `SipManager.class` string dump
* exact `confbridge list` output
* exact dialplan sections used in the test
Thank you.
---
--
This message was sent by Atlassian Jira
(v8.20.10#820010)