Help with API connection to VOIP.ms

I am not a coder, but I have set up a few scenarios that are functioning quite well, even using the raw API post for a few of them.

I need to connect VOIP.ms to a scenario, but don’t have the skills to build it from scratch.
https://voip.ms/m/apidocs.php

I was wondering if this is a place to ask for this kind of help?

If I had a few examples in front of me I could probably figure out the rest.
getCallRecordings
getCallRecording
getVoicemails
getDIDsInfo
sendSMS

Hey @Nate
I am unable to access the documentation because its behind a login page. Could you share some images or something that will help me help you :slight_smile: ?

Hey @Nate, like said already please if you could share some screenshots or docs.
But in which part are you looking to get some help? Did you read about HTTP calls?
What do you already have? This information will help alot :wink:

Wow, great community, thank you for the quick response!

Sorry @EyalGershon I didn’t realize it was behind a login.

Here it is:
https://roism.net/drive/VoIPms-API-Documentation.html

Here is wsdl:
https://roism.net/drive/server.wsdl

And API examples:
https://roism.net/drive/API.zip

FYI, if you create an account by using this referral link, you will get a $10 credit, which is enough to cover 10 months of a single phone line for any testing
https://voip.ms/en/invite/MTY2MDgy

@Bjorn.drivn I did see that, but wasn’t sure where to start. Sorry I’m a bit novice at this but quickly learning. Which is why I feel a few examples would help point me in the right direction.

1 Like

Soap is a SOB to deal with if you are not familiar. Since you have a wsdl it should be easier however testing with your file does not quite get the scheme but this can be solved.

Lets imagine this does work, you would use the SOAP module and add your wsdl URI and it should basically map everything for you.

Peek 2023-01-17 09-15

The part that sucks is that it fails for some reason when it comes to the actual operation scheme.
I will try and test this wsdl file and see if I can figure this out for you.

2 Likes

Thanks again @EyalGershon!

So I just found this, which even references voip.ms in it. Is this the problem you are having?
https://www.make.com/en/help/app/soap

Yeah this is an old guide and will probably not work today, I tested.
The only way to achieve this is by manually looking at the scheme and building the requests accordingly.

Let me show you an example for sendSMS, if it works let me know and I will help you out with the rest.

Use the Make a Request Module, set the request url to https://voip.ms/api/v1/server.php, method to POST, body type to RAW, content type to text/xml and copy this to your request body:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="https://voip.ms/api/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="https://voip.ms/api/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <SOAP-ENV:Body>
      <mns:sendSMS xmlns:mns="urn:VoIPmsService" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <params xsi:type="xsd1:sendSMSInput">
            <api_username xsi:type="xsd:string">{{username}}</api_username>
            <api_password xsi:type="xsd:string">{{password}}</api_password>
            <did xsi:type="xsd:string">{{did}}</did>
            <dst xsi:type="xsd:string">{{dst}}</dst>
            <message xsi:type="xsd:string">{{message}}</message>
         </params>
      </mns:sendSMS>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Just map the fields accordingly and test, it should look like this:

Let me know if that works for you, I am getting a wrong credentials message so it seems to be sending the request correctly.

2 Likes

Yes, that did work after adding makes IP addresses to voip.ms

Using your example, I also hacked together this call:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
	xmlns:tns="https://voip.ms/api/wsdl"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsd1="https://voip.ms/api/schema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<SOAP-ENV:Body>
		<mns:getCallRecordings
			xmlns:mns="urn:VoIPmsService" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
			<params xsi:type="xsd1:getCallRecordingsInput">
				<api_username xsi:type="xsd:string">USER</api_username>
				<api_password xsi:type="xsd:string">PASSWORD</api_password>
				<account xsi:type="xsd:string">ACCOUNT</account>
				<date_from xsi:type="xsd:string">2023-01-10</date_from>
				<date_to xsi:type="xsd:string">2023-01-17</date_to>
			</params>
		</mns:getCallRecordings>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

and got an edited response:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:ns1="urn://www.voip.ms"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:ns2="http://xml.apache.org/xml-soap"
	xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
	<SOAP-ENV:Body>
		<ns1:getCallRecordingsResponse>
			<return xsi:type="ns2:Map">
				<item>
					<key xsi:type="xsd:string">recordings</key>
					<value SOAP-ENC:arrayType="ns2:Map[11]" xsi:type="SOAP-ENC:Array">
						<item xsi:type="ns2:Map">
							<item>
								<key xsi:type="xsd:string">callrecording</key>
								<value xsi:type="xsd:string">MTY2MDgyLTQwMTM3OTM1NT222UwNDQwOC1JTi0xNjczMzg5NTc3</value>
							</item>
							<item>
								<key xsi:type="xsd:string">datetime</key>
								<value xsi:type="xsd:string">2023-01-10 17:26:17</value>
							</item>
							<item>
								<key xsi:type="xsd:string">caller</key>
								<value xsi:type="xsd:string">401372222</value>
							</item>
							<item>
								<key xsi:type="xsd:string">destination</key>
								<value xsi:type="xsd:string">213652222</value>
							</item>
							<item>
								<key xsi:type="xsd:string">type</key>
								<value xsi:type="xsd:string">Incoming</value>
							</item>
							<item>
								<key xsi:type="xsd:string">account</key>
								<value xsi:type="xsd:string">22222</value>
							</item>
							<item>
								<key xsi:type="xsd:string">duration</key>
								<value xsi:type="xsd:string">00:09</value>
							</item>
						</item>
						<item xsi:type="ns2:Map">
							<item>
								<key xsi:type="xsd:string">callrecording</key>
								<value xsi:type="xsd:string">MTY2MDgyLTE3MjQyNDU2222TE4NDQyNTMwMTI4LU9VVC0xNjczOTQzNzY1</value>
							</item>
							<item>
								<key xsi:type="xsd:string">datetime</key>
								<value xsi:type="xsd:string">2023-01-17 03:22:45</value>
							</item>
							<item>
								<key xsi:type="xsd:string">caller</key>
								<value xsi:type="xsd:string">1724242222</value>
							</item>
							<item>
								<key xsi:type="xsd:string">destination</key>
								<value xsi:type="xsd:string">1844252222/value>
							</item>
							<item>
								<key xsi:type="xsd:string">type</key>
								<value xsi:type="xsd:string">Outgoing</value>
							</item>
							<item>
								<key xsi:type="xsd:string">account</key>
								<value xsi:type="xsd:string">222222</value>
							</item>
							<item>
								<key xsi:type="xsd:string">duration</key>
								<value xsi:type="xsd:string">00:20</value>
							</item>
						</item>
					</value>
				</item>
				<item>
					<key xsi:type="xsd:string">status</key>
					<value xsi:type="xsd:string">success</value>
				</item>
				<item>
					<key xsi:type="xsd:string">recordsTotal</key>
					<value xsi:type="xsd:int">11</value>
				</item>
				<item>
					<key xsi:type="xsd:string">recordsFiltered</key>
					<value xsi:type="xsd:int">11</value>
				</item>
				<item>
					<key xsi:type="xsd:string">date_from</key>
					<value xsi:type="xsd:string">2023-01-10</value>
				</item>
				<item>
					<key xsi:type="xsd:string">date_to</key>
					<value xsi:type="xsd:string">2023-01-17</value>
				</item>
			</return>
		</ns1:getCallRecordingsResponse>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

But moving the values from this raw response down the pipeline, looks complicated to me.

This is not the time to give up because you are almost there :).
You got a response containing the data. did you check the “parse response” checkbox in the http module?

1 Like