Jump to content

Tom Wellige

Root Moderator
  • Content Count

    3,087
  • Joined

  • Last visited

  • Days Won

    99

Tom Wellige last won the day on January 28

Tom Wellige had the most liked content!

Community Reputation

60 Excellent

About Tom Wellige

  • Rank
    Advanced Member

Profile Information

  • Gender
    Male
  • Interests
    SwyxWare, Software Development, Flight Simulation

Recent Profile Visitors

10,491 profile views
  1. We invite you to our first joint partner conference with Voiceworks on Thursday, March 25, 2021. We offer you a diverse program. We will give you exclusive insights into the product and company strategy and inform you about news from the Enreach Group. Many opportunities to exchange ideas with each other round out the interactive event format. The modular sessions allow each participant to put together their own individual program. The spectrum ranges from cloud contact center solutions to integration possibilities in Microsoft Teams and AI-based chatbots. You can easily participate in this event via the web browser of your computer, tablet or smartphone. Our product and technology partners will present their offerings in a digital marketplace. Of course, the presentation of the Partner Awards is not to be missed. To ensure that the digital event is also a fun event, we have also prepared a number of interactive elements and a surprise or two. The event program and presentations are exclusively in German. If you would like to take part in our partner conference, please send us an email at partnernet@swyx.com. Press release on swyx.com
  2. Wir laden Sie herzlich zu unserer ersten gemeinsamen Partnerkonferenz mit Voiceworks am Donnerstag, 25. März 2021 ein. Wir bieten Ihnen ein vielfältiges Programm. Dabei geben wir Ihnen exklusive Einblicke in die Produkt- und Unternehmensstrategie und informieren Sie über Neuheiten aus der Enreach-Gruppe. Zahlreiche Möglichkeiten für den Austausch untereinander runden das interaktive Veranstaltungsformat ab. Durch die modularen Sessions kann sich jeder Teilnehmer sein individuelles Programm zusammenstellen. Das Spektrum reicht dabei von Cloud-Contact-Center-Lösungen über Integrationsmöglichkeiten in Microsoft Teams bis hin zu KI-basierten Chatbots. Sie können ganz einfach über den Webbrowser Ihres Computers, Tablets oder Smartphones an diesem Event teilnehmen. Auf einem digitalen Marktplatz stellen unsere Produkt- und Technologie-Partner ihr Angebot vor. Natürlich darf auch die Verleihung der Partner Awards nicht fehlen. Damit auch im Rahmen des digitalen Events Stimmung aufkommt, haben wir zudem eine Reihe von interaktiven Elementen und die ein oder andere Überraschung vorbereitet. Wenn Sie an unserer Partnerkonferenz teilnehmen möchten, schreiben Sie uns gerne eine E-Mail an partnernet@swyx.com. Pressemitteilung auf swyx.de
  3. Unter dem Namen UPDATE21 veranstalten Swyx und Voiceworks ihre erste gemeinsame Partnerkonferenz am Donnerstag, 25. März 2021 – und zwar als Online-Event. Die digitale Konferenz bietet Partnern und interessierten Resellern ein vielfältiges Programm rund um das Produktangebot von Swyx und Voiceworks in den Bereichen Unified Communications und Collaboration. Dabei geben die beiden Unternehmen, die zur Enreach Gruppe gehören, exklusive Einblicke in ihre Produkt- und Unternehmensstrategie, informieren über Neuheiten und vermitteln Hintergrundwissen. Zahlreiche Möglichkeiten für den Austausch untereinander runden das interaktive Veranstaltungsformat ab. Geschäftsführer, Technik-, Vertriebs- und Marketingexperten sowie andere Fachleute aus dem ITK-Channel können ganz einfach über den Webbrowser ihres Computers, Tablets oder Smartphones teilnehmen. Dank des modularen Konzepts mit Sessions zu verschiedenen Themen kann sich jeder Teilnehmer ein individuelles Programm mit den für ihn relevanten Inhalten zusammenstellen. Das Spektrum reicht dabei von Cloud-Contact-Center-Lösungen über Integrationsmöglichkeiten in Microsoft Teams bis hin zu KI-basierten Chatbots. Auf einem digitalen Marktplatz stellen Produkt- und Technologie-Partner ihr Angebot vor. Natürlich darf auch die Verleihung der Partner Awards an besonders erfolgreiche Reseller nicht fehlen. Damit auch im Rahmen des digitalen Events Stimmung aufkommt, haben Swyx und Voiceworks zudem eine Reihe von interaktiven Elementen und die ein oder andere Überraschung vorbereitet. Interessierte Reseller können sich per Mail an partnernet@swyx.com oder partner-de@voiceworks.com für die Veranstaltung anmelden. Pressemitteilung auf swyx.de
  4. enreach, the company group Swyx belongs to, is currently searching for a Product Manager MS Teams Complementary Products. If you are interested you can find further details here: Product Manager MS Teams Complementary Products ENREACH.COM
  5. Swyx hat einen Posten als Software Entwickler C# (m/w/d) mit Fokus Web-Komponenten zu besetzen. Alle weiteren Details hierzu finden Sie hier: Stellenangebote - Swyx WWW.SWYX.DE Stellenangebote bei Swyx: Entwickeln Sie bereits heute die Unternehmenskommunikation von morgen!
  6. Swyx hat einen Posten als IT Support Engineer (m/w/d) zu besetzen. Alle weiteren Details hierzu finden Sie hier: Stellenangebote - Swyx WWW.SWYX.DE Stellenangebote bei Swyx: Entwickeln Sie bereits heute die Unternehmenskommunikation von morgen!
  7. Swyx hat einen Posten als Product Manager (m/w/d) zu besetzen. Alle weiteren Details hierzu finden Sie hier: Stellenangebote - Swyx WWW.SWYX.DE Stellenangebote bei Swyx: Entwickeln Sie bereits heute die Unternehmenskommunikation von morgen!
  8. Swyx hat einen Posten als Partner Account Manager (m/w/d) Region Süd/Südwest zu besetzen. Alle weiteren Details hierzu finden Sie hier: Stellenangebote - Swyx WWW.SWYX.DE Stellenangebote bei Swyx: Entwickeln Sie bereits heute die Unternehmenskommunikation von morgen!
  9. Ich habe das gerade ausprobiert und keinerlei Probleme gehabt. Ich schick Dir das Video per PM.
  10. The following blog post is restored from the Swyx Forum Archive (2007-2014) and was posted originally at 26.11.2008 in "Martin's Blog". Before you continue you should read the first part about how to write a SwyxIt Plug-In in managed code. This blog post extends the first sample and adds full-text search support. SwyxIt can ask a plug-in to find a number for a name, e.g. when you use the phonebook search function. A plug-in needs to support this custom COM interface which is defined in the SDK (CLMGgrPub.idl): [ object, uuid(f8e55548-4c00-11d3-80bc-00105a653379), helpstring("IFulltextSearchAddIn Interface"), pointer_default(unique) ] interface IFulltextSearchAddIn : IUnknown { HRESULT FulltextSearchInContacts( [in] BSTR bstrSearchText, [in] BOOL bEnableSearchInNumbers, [in] IDispatch* pISearchResultCollection); }; In managed code this interface definition is [ComVisible(true)] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("f8e55548-4c00-11d3-80bc-00105a653379"), AutomationProxy(false)] public interface IFulltextSearchAddIn { [PreserveSig()] [return: MarshalAs(UnmanagedType.Error)] int FulltextSearchInContacts( [MarshalAs(UnmanagedType.BStr), In()] string searchText, [MarshalAs(UnmanagedType.Bool), In()] bool enableSearchInNumbers, [MarshalAs(UnmanagedType.IDispatch), In(), Out()] object searchResultCollection); } The interface has some unusual semantics. The third parameter is an IDispatch based interface which is defined in CLMgrPub.idl like this: [ object, uuid(f8e55543-4c00-11d3-80bc-00105a653379), dual, helpstring("INameNumberSearchResultCollection Interface"), oleautomation, pointer_default(unique) ] interface INameNumberSearchResultCollection : IDispatch { [propget, restricted, id(DISPID_NEWENUM)] HRESULT _NewEnum([out, retval] IUnknown** pVal); [id(DISPID_VALUE)] HRESULT Item([in] VARIANT index, [out, retval] VARIANT* pVariant); [propget, id(1)] HRESULT Count([out, retval] long *pVal); [propget, id(2)] HRESULT CreateItem([out, retval] IDispatch** ppVal); [id(3)] HRESULT AddItem([in] IDispatch* pVal); }; It’s an input parameter, i.e. SwyxIt provides such a collection object to your plug-in. You just have to fill it with data. As you can see from the definition INameNumberSearchResultCollection is an automation interface. We can just add a COM reference to clmgr.exe to our project in Visual Studio and the framework creates a runtime callable wrapper (RCW) for it. The items in this collection are NameNumberSearchResult objects. Fortunately the interface of that object is an automation interface too and the RCW has a definition of it, too. Here’s a small sample implementation of the search function: 1: public int FulltextSearchInContacts( 2: string searchText, 3: bool enableSearchInNumbers, 4: object searchResultCollection) 5: { 6: NameNumberSearchResultCollection resultCollection = (NameNumberSearchResultCollection)searchResultCollection; 7: 8: // This is a sample, we find "Swyx" only. 9: // Note: Swyxit always provides lower case text. 10: if (searchText.Contains("swyx")) 11: { 12: NameNumberSearchResult result = new NameNumberSearchResult(); 13: result.Name = "Swyx Solutions AG (SampleAddIn result)"; 14: result.Number = "+4923147770"; 15: resultCollection.AddItem(result); 16: } 17: 18: return 0; 19: } 20: As you can see on line 6 the third parameter can be casted to a NameNumberSearchResultCollection. You just have to implement your search logic, create NameNumberSearchResult for each result and add it to the collection with AddItem() (lines 12 to 15). Important: Per default full-text search is not enabled for SwyxIt! plug-ins. You have to create a REG_DWORD registry value named FulltextSearchAddinEnabled and set it to 1. It’s located in the registry key of your plug-in (See the previous blog entry). Without that registry value SwyxIt does not use the plug-in’s IFullTextSearchAddIn interface. Last, but not least, here’s the updated sample plugin from the previous post. Have fun. CSharpAddIn.zip
  11. The following blog post is restored from the Swyx Forum Archive (2007-2014) and was posted originally at 24.11.2008 in "Martin's Blog". There’s a software development kit for SwyxIt with a lot of useful examples. However, SwyxIt’s roots are native, unmanaged C++, and most of the examples are in native code, too. Recently somebody asked in the forum if it’s possible to write a client plug-in in C#. Unfortunately the interfaces a plug-in has to provide and which are called by SwyxIt are custom COM interfaces, not standard automation interfaces. In the latter case, the automatically created COM-callable wrapper for .NET types would work and you could just write a c# interface with a matching signature. But it’s still possible. The .NET COM interoperability is is able to do a lot more than the automatic wrapper creation suggests. The first interface a SwyxIt line manager (ClMgr) plug-in has to implement is IClientAddInLoader. It’s purpose is not to provide a loader for the plug-in as the name suggests, but to provide an interface for ClMgr plugin loader to initialize and get information about the plugin. It looks like this: 1: [ 2: object, 3: uuid(f8e55372-4c00-11d3-80bc-00105a653379), 4: helpstring("IClientAddInLoader Interface"), 5: pointer_default(unique) 6: ] 7: interface IClientAddInLoader : IUnknown 8: { 9: HRESULT Initialize([in] DWORD dwReserved); 10: HRESULT GetName([out] BSTR *pName); 11: HRESULT GetVersion([out] BSTR *pVersion); 12: HRESULT UnInitialize([in] DWORD dwReserved); 13: }; Look at line 7. It’s derived from IUnknown. An automation interface would derive from IDispatch and would have the “oleautomation” attribute set. To instruct the .NET Framework to generate such an interface for a C# class you have to define it like this: 1: [ComVisible(true)] 2: [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 3: [Guid("f8e55372-4c00-11d3-80bc-00105a653379"] 4: [AutomationProxy(false)] 5: public interface IClientAddInLoader 6: { 7: [PreserveSig()] 8: [return: MarshalAs(UnmanagedType.Error)] 9: int Initialize([MarshalAs(UnmanagedType.U4), In()]int reserved); 10: 11: [PreserveSig()] 12: [return: MarshalAs(UnmanagedType.Error)] 13: int GetName([MarshalAs(UnmanagedType.BStr), Out()]out string name); 14: 15: [PreserveSig()] 16: [return: MarshalAs(UnmanagedType.Error)] 17: int GetVersion([MarshalAs(UnmanagedType.BStr), Out()]out string version); 18: 19: [PreserveSig()] 20: [return: MarshalAs(UnmanagedType.Error)] 21: int UnInitialize([MarshalAs(UnmanagedType.U4), In()]int reserved); 22: } Line 1 defines with the COMVisibleAttribute that this interface is visible from COM. The InterfaceTypeAttribute on line 2 defines that it’s an IUnknown-based interface. The interface ID (IID) has to be defined with the GuidAttribute (line 3). This has to be the same IID as in the original interface definition. The AutomationProxyAttribute Line 4 completes the interface attributes by defining that the standard automation proxy will not be used. The interface method definitions are mostly straight-forward. The MarshalAsAttribute, InAttribute and OutAttribute declarations for the method parameter are probably not necessary, because the framework can derive that from the method signature itself. But better safe than sorry. Essential is the PreserveSigAttribute. Without it the .NET framework would expose a method like an automation method. Example. For a native COM application without that attribute the IClientAddInLoader.Initialize method would look this: HRESULT Initialize([in] DWORD dwReserved, [out,retval]long* pReturnValue); If your implementation returns a value the caller which uses COM would get that value in *pReturnValue and the HRESULT would be S_OK. If you would throw an exception, the framework would return an error HRESULT to the caller. But we need to provide exactly the interface methods SwyxIt expects and PreserveSignatureAttribute allows us to do that. To implement the interface just create a C# class inheriting from the interface above. That class needs some attributes, too: 1: [ComVisible(true)] 2: [Guid("373767E9-2953-42f9-98CA-63A232BC5B6F")] 3: [ClassInterface(ClassInterfaceType.None)] 4: public class SampleAddIn 5: : IClientAddInLoader, IClientResolverAddIn 6: { First (line 1) we declare that this managed type should be visible from COM. Next on line 2 we define the COM object class ID (CLSID). Last, but not least (line 3) we declare that this class has no COM class interface. If you would use ClassInterfaceType.AutoDispatch or AutoDual the framework would expose all public non-static methods of that class to COM. With ClassInterfaceType.None no methods will be exposed. This does not effect the inherited interface, but it ensures that no other methods of your class are accidentally exposed to COM. When you’re done with your implementation register your assembly with regasm.exe /codebase SampleAddIn.dll Last, but not least you have to create a registry key for SwyxIt to find your plugin (as described in the Client SDK dokumentation). Create a new registry key at location HKLM:\software\swyx\client line manager\currentversion\options\plugins. Key name is the CLSID of your object, i.e. the GUID you declared with the GuidAttribute of your managed type. Here’s an example which implements IClientAddInLoader and IClientResolverAddIn: CSharpAddIn.zip Have fun and start writing SwyxIt! plug-ins in any .NET language you like. [Edit: Added missing information about assembly registration]
  12. Die beiden markierten Stellen haben in Deinem Code gefehlt: Und du musst Deine Funktion im "Variable auswerten" Block auch auffrufen und nicht einfach eine nicht vorhande Variable dort hinein schreiben: Hier das gefixte Skript: Bereitschaft_kdd_fixed.rse
  13. Häng hier doch bitte einfach mal die .rse Datei dran. Dann schaue ich mir das mal an.
  14. Hallo Stefan, mir scheint da ist irgendetwas an dem Zentrale Benutzer kaputt den Du benutzt. Leg Dir doch mal einen neuen Benutzer an, und bring das Call Routing bei dem an den Start.
  15. if not rs.EOF then PBXScript.OutputTrace "rs(number) else PBXScript.OutputTrace "No number found" end if Beim ersten OutputTrace öffnest Du einen String mit einem Anführungszeichen, schliesst ihn aber nicht. Das führt zum Kompilierungsfehler.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and have taken note of our Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.