A while back, I found a technique to launch Skype and using the SkypeOut URI scheme, dial a number in Skype. I tested the ability recently and was surprised to see that the technique seems to be broken.
Back in 2006 Skype announced on their blog that a FileMaker plug-in had been created by Premium Systems, but the links are all dead now. BeezWax claims to be able to work with Skype on their web site, but there is not much detail included. There is also an AppleScript method to achieve this, but it is obviously not cross platform. 24U Software has a phone plugin called Phone Companion that works with some PBXs, but the developers don’t list Skype as a feature.
In searching for a solution, I happened upon an approach described by Rennie Innis and David Jondreau separately on various forums. They both suggest employing a Web Viewer to get the call out capability back again.
Update 2013-09-16: See also Sounds Essentials blog post on this same topic Cross-Platform Skype Out, Calling and Chat. They take a cross-platform approach to the scripts (included in PDF format) as well as how to initiate Skype Chats.
Demo database – FileMaker’s Contacts Template
Web Viewer – minimize its visibility
- Name the Web Viewer so you can reference it in the script
- Turn off interactivity
- Set the fill to no fill
- Set the borders to no borders
- Send the Web Viewer behind another object
Web Viewer is named ‘skype_web_viewer”
In the Inspector, give the Web Viewer a name.
Web Viewer settings
In the Web Viewer setup panel, all the interaction options are toggled off. The Web Viewer is also set to have no fill and no border, again to make it as inconspicuous as possible.
Web Viewer is sent to the background to hide it
Select the Web Viewer, position it over top of another field or object and then from the Arrange menu select ‘Send to Back’.
Skype dialing button added to the Work Phone field.
Call phone via SkypeOut script with the telephone number field as the script parameter
Script Parameter is set to the Work Phone field contents
Set the Script Parameter to whichever field you wish to dial from. Each phone number field could have an associated SkypeOut button.
Call phone via SkypeOut script
Web Viewer SkypeOut script details
Note the alternate URI scheme for iOS devices.
- #Put the phone number in the script parameter of the button.
- #Declare a script variable. This variable is being sent to a web viewer called “skype_web_viewer”
- If [PatternCount ( Get ( ApplicationVersion ) ; “Pro” )]
- Set Variable [$SkypeNumber; Value:”callto:”&”+1″ & Filter ( Get(ScriptParameter) ; “0123456789+” )]
- #Merely by setting the web viewer to this URL, FileMaker launches Skype and attempts to make this call.
- Set Web Viewer [Object Name: “skype_web_viewer”; URL: $SkypeNumber]
- #Clean up the Web Viewer with “Go Back” action.
- Set Web Viewer [Go Back]
- #This variance is to deal with iPhones and iPads
- Open URL [No dialog; “skype:”&Get(ScriptParameter)&”?call”]
- End If
Result of Script in Skype
Skype pops up a dialog box asking you to confirm you wish to dial using Skype. There may be a way to turn this notification off and go directly to the call, but I did not see it in the Skype Preferences panel.
Alternative – AppleScript SkypeOut Method
If your users are all on Macintosh, you might consider using this approach instead . The script should just copy and paste into your solution. All you need to change is the phone number field. This won’t work on Windows or iOS.
Source: Alternate AppleScript Method
I saw mention of an AppleScript approach, and have included a scripted example of this approach in the demo file as well. The calculation generates an AppleScript that looks like this:
- tell application “Skype”
get URL “callto:5555551212”
- #In this case,the telephone field is coded into the calculated AppleScript as a variable, so it is a little easier to see. This number could come from a script variable as in the other example.
- Set Variable [$SkypeNumber;
- Value:”tell application \”Skype\”¶
- get URL \””&”callto:”&”+1″ & Filter ( Contacts::Work Phone ; “0123456789+” )&”\”¶
- end tell”]
- #Set this to the AppleScript
- Perform AppleScript [$SkypeNumber]
Update 2013-09-04: Note that this issue is isolated to the Macintosh platform. This technique will still work on Windows. Thanks to reader Egbert Friedrich for prompting me to get around to testing it on Windows. I was being lazy, I hadn’t launched Parallels since replacing my hard drive and didn’t have Skype installed, didn’t look forward to clicking through all the dialog boxes, yada, yada… He pointed out that the script step OpenURL and “skype:”&PhoneNumberHere seems to work just fine on his side of the world. So I tested and he is right, the old method still works well on Windows. From reading the forums and testing it, the issue seems to be between FileMaker, Safari and Skype.
When you send out the Open URL to Safari, it is supposed to pass it on to Skype, but for some reason it stalls in the process. Sending the URL through a Web Viewer instead solves the problem.
In a follow up email, Egbert suggested using a freeware app to solve the issue another way on Macs.
“…have the “skype” assigned to the app Skype instead of Safari. Otherwise Safari occupies all url calls. You can set the standard app with this freeware OS X Preference Pane: RCDefaultApp”
Update 2014-11-16: Added a Web Direct version of the dialing routine to the Demo File. There are two Web Viewers that you should be able to just copy and paste into your solution. They also will work in a regular FileMaker Pro client. They are a simpler approach to adding Skype calling.
The limitations over the other method are that they are slower to load and the size of the Web Viewer cannot be made as small as the Button/Web Viewer combo on the previous screen.
- Choose either icon or text only Web Viewer
- Copy/Paste Web Viewer to your layout
- Edit the Calculated URL
- Change the field to your telephone field
- Remove commenting (/* and */) from beginning/end of URL