Lync / Skype 4 Business Bot - ucma

I'd like to create a simple server service that can perform the following tasks:
Retrieve presence info for specified user(s).
Send message to specified user.
From what i've been reading, and because i'm siting server side I could choose to use UCMA 5.0? But i'm seeing a lot of push of the new UCWA SDK and working with the UCWA rest services. Is there any particular reason why i would use UCWA server side rather than just the UCMA API? I read that UCWA will, in the future, be support by Microsoft for Cloud --- Any input and experiences shared on this would be great.
Thanks, mike

UCWA will be at some point be supported in Office 365 indeed. So if you create an application with UCWA you can expect it will run in the next future on your S4B On-Prem as well as on Office 365.
I have to say anyway this support for UCWA on 365 is already long awaited, and still there's no official announcement about availability date.
A very good reason to choose UCWA instead of UCMA, also in case of server automation, is the much simpler deployment of UCWA (UCMA deployment is quite tough).
UCMA must run on a Windows Server OS which joins the S4B farm basically (thus sits in your DMZ)
UCWA can run on any device that 'speaks' HTTP. Your UCWA App can run, for instance, on a Raspberry Pi
I think this is a huge difference, for sure it is for your system administrator

Old thread, but in my experience, writing server-side code with UCMA is somewhat easier than trying to use UCWA - and all that UCWA really is is a UCMA application sitting on your Lync/S4B server with a REST wrapper.
For the fairly simple use-case you've described, you could write the service as a client-endpoint UCMA application, which avoids the rather irritating Lync/S4B topology changes and deployment headaches that Massimo alludes to for a TrustedApplication. In this configuration, you are essentially just a third-party client, and you provide the credentials to sign into Lync/S4B as a specified user. Under this scenario, the only requirements are that the server running your application needs to be joined to your domain, run a 64-bit Windows OS, and have the UCMA runtime installed.
Some sort of API support for Skype for Business on Office365 is badly needed. There was some promises of a UCMA-like SDK for Office 365, but it has been more than six months with no hints of an actual release.

Related

How do I launch/publish my website? ASP.NET Core

I'm new to web development and just built my first website with .Net Core. It's primarily HTML, CSS, and JavaScript with a little C# for a contact form.
Without recommending any service providers (question will be taken down), how do I go about deploying the website? The more details the better as I have no idea what I'm doing haha.
Edit: I am definitely going to go with a service provider, however the business I am building the website for doesn't have a large budget so I want to find the best provider at the lowest cost.
Daniel,
As you suspect, this is a bit of a loaded question as there are so many approaches. One approach is to use App Services within Microsoft Azure. You can create a free trial Azure account to start that includes a 200.00 credit, which is more than enough to do all of this for free. Then, using the Azure Management Portal, create an App Service (also free) on an App Service Plan in a region that makes sense for you (i.e. US West). Once you do that, you can download what is called a Publish Profile from within the App Service's Management Portal in Azure.
If you're using Visual Studio, for example, you can then right click your project and "Publish" it (deploy to the cloud, or the App Service you just created). One option in that process is to import an Azure Publish Profile, which you can do with the one you just downloaded. This makes it really simple. The Publish Profile is really just connection information to your Azure App Service (open it in Notepad to see). It will chug for a bit and then publish and load the app for you. You can also get to the hosted version of your app by clicking the Url of the app in the App Service management portal on the main page.
This may be oversimplifying what you need to do, but this is a valid direction to take. AWS and others have similar approaches.
Again, tons of ways to do this, but this is a free approach. :-) I don't consider Azure a Service Provider in the sense that you asked us not to. Instead, I wanted to outline one turn-key approach with specific details on how to get there.
You can find specific steps in a lot of places, such as this link:
https://www.geeksforgeeks.org/deploying-your-web-app-using-azure-app-service/
DanielG's answer is useful, but you mentioned you don't want use any services from service provider.
Usually, there are only three ways to deploy the program,
first one is the app service provided by the service provider mentioned by DanielG,
**Benefits of using service provider products:**
1. Very friendly to newbies, follow the documentation to deploy the application in a few minutes.
2. It offers a very stable, scalable service that monitors the health of our website.
3. We can get their technical support.
**Shortcoming**
It is a paid service, and although Azure's service has a free quota, it will run out.
**Suggestion**
It is recommended that websites that are officially launched use the services of service providers.
second one is to use fixed IP for access (it seems that fixed iPv4 IP is not provided in network operations),
**Benefits of using fixed IP:**
If there is a fixed IP address, or if the carrier supports iPv6, we can deploy our website, and the public network can access it. And if you have domain, it also can support https.
**Shortcoming**
1. There are cybersecurity risks and are vulnerable to attack.
2. Without perfect website health monitoring, all problems need to be checked by yourself, and it is very troublesome to achieve elastic expansion.
**Suggestion**
It is generally not recommended because there is no fixed IP under normal circumstances. Broadband operators used to offer it, but now it doesn't.
If you are interested, you can try ipv6 to test.
the last one is to use tools such as ngrok or frp for intranet penetration.
**Benefits of using intranet penetration:**
Free intranet penetration services such as ngrok, the URL generated by each run is not fixed, and there are some limitations, such as a new URL will be generated after a certain period of time, which is enough for testing.
Of course you can purchase the service of this tool, which provides fixed URLs and supports https.
**Shortcoming (same as the second one)**
**Suggestion**
The functional implementation is the same as the second suggestion, and the physical devices used by the website are all their own. The intranet penetration tool (ngrok, or frp) solves the problem of not having a fixed IP, providing a URL that you can access.
There are few users and the demand for web services is not high, so it is recommended that individual users or small business users use ngrok and frp in this scenario. Generally suitable for OA use in small businesses.

Skype web-SDK dependencies unclear

I am planning to make a soft phone JQuery plug-in with the new Skype web-SDK.
It is still unclear to me if the web-sdk depends on UCWA or that it can be used with the classic UCMA as well, and does it require Office365 for on-premise UCMA / UCWA machines like a cloud hosted instance.
Also what is the current availability of UCWA?
Thanks in advance.
Has been recently announced, during Build 2016 conference, that UCWA as well as Skype Web SDK is now available also for Office 365 customers.
UCMA is still only available to customers with on-premises Lync 2013 / SfB installation
Refer to this documentation: Skype Developer Platform
I may have found the answer here skype document.
What’s worth mentioning here is that UCMA is still not supported in Skype for Business Online, and at launch the Skype Web SDK will not be supported Online. Also, only Basic support for the Web SDK will be available in Lync 2013. I don’t know what that means exactly, but when I find out I’ll let you know!
Still a bit vague for my taste
Enzo - Your reference is more than a year old. We have launched Skype Web SDK for online. It depends on UCWA, which is also now available for online.

Is it possible to automate Outlook using Selenium?

I am trying to create a Python script that logs in to my Outlook account, opens the unread messages, and if it has attachments it downloads them.
However, after login, it seems that I am stuck and cannot do anything.
Are these activities out of the scope of Selenium?
Where do you run your python scripts?
You may find REST API helpful. But if you are talking about the desktop edition here is what MS states:
Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.
If you are building a solution that runs in a server-side context, you should try to use components that have been made safe for unattended execution. Or, you should try to find alternatives that allow at least part of the code to run client-side. If you use an Office application from a server-side solution, the application will lack many of the necessary capabilities to run successfully. Additionally, you will be taking risks with the stability of your overall solution. Read more about that in the Considerations for server-side Automation of Office article.
If you deal only with Exchange profiles consider using EWS instead. See EWS Managed API, EWS, and web services in Exchange for more information.
If you are talking about outlook.com then yes, it's possible. I guess it's gonna require a lot of xpath though...

Agent based applications using WCF

i'm about to decide on technology choices for an agent based application used in the transportaion systems domain.
basically there will be a central system hosting the backend, and multiple agents located across town (installed on desktops) that communicate with devices/kiosks collecting data and then transmitting them back to the central server. the central server could also be hosted on the cloud.
following are important
securing the data and communications between the device and the agent
and the agent and central server.
agents should be easily installable with little or no configuration.
near 100% uptime and availability
Does WCF fit the bill here?
if so what binding types should i go for? netTCP or wsHttp with SSL/HTTPS?
WCF is definitely a fit choice for this kind of scenario. For your bindings, the actual question is what technology you are going to use. Do you want to make the agents run in a non .NET environment like Java, then you should chose for wsHttpBinding. This binding communicates through SOAP and is very interoperable.
If you chose to use .NET agents, you might as well use netTcpBinding because they use the same WCF frameworks. It also supports binary encoding. If you really need to make a choice, take a look at the MSDN Documentation.
For your agents you could use a simple console application that runs in the background as a Windows service. WIX can help you with that (install an application as windows service), but thats all I know. WIX can also help you with basic installing and configure everything for you but it has a high learning curve so you might need to invest time in it.

Create a Web Service(WCF) to integrate with QuickBooks

I am in the process of integrating our custom web app with QuickBooks Enterprise 9. My thought is that I could use QuickBooks as my "database" of sorts. When a person creates an invoice, the invoice is actually stored only in QuickBooks. When a person views a list of invoices, they are actually viewing a list of QuickBooks invoices. I want to make sure the data is stored in only one location.
I realize that I could use the QB Web Connector, but the problem with that is I wouldn't have control over when the requests to QB actually get processed (That job is up to the Web Connector).
So I have my web UI to act as the QuickBooks "face," but I don't have any good way to get to and from the QuickBooks file located on an internal server. What I was thinking was that I could create a WCF web service and install it on the QuickBooks server. The web service could then be my integration point. My custom web app could then consume the web service and, viola, I have access to my QuickBooks files.
My question is this: Can a WCF app connect and run QuickBooks? If not, could i create a Windows service to act as my point of integration? If so, can my custom web app "consume" a windows service?
I'll start by warning you that QuickBooks probably isn't your best choice for a reliable back-end database accessible from a remote website. In fact... it's probably a really, really bad choice.
You should have your own application database, and then if you need to also exchange data with QuickBooks, do that outside of the normal lifecycle of your app, as a separate sync process.
QuickBooks generally isn't reliable enough for always-online type of applications due to a number of reasons:
Flaky SDK connections
Updates and single-user mode will
lock you out of accessing QuickBooks
Difficulty in establishing SDK connections from non-GUI processes (Windows Services and IIS processes)
With that said...
Yes, you could create a WCF web service, host it on the QuickBooks machine, and make your WCF web service relay messages to/from QuickBooks.
Yes, you could also create a Windows Service that does the same sort of thing.
Do NOT implement it as a Windows service, and do NOT implement it within IIS - instead implement it as a GUI app that runs alongside QuickBooks.
If you try to implement things as a Windows service or within IIS, the QuickBooks SDK requires you have a GUI available (it users a GUI COM message pump for events dispatching or something like that...) to process requests, so you'll probably need to use something like QBXMLRP2e.exe to straddle the process boundary between QuickBooks and your non-GUI Windows service/IIS. My experience has been that it's a gigantic pain in the butt, and requires mucking with DCOM permissions as well.
I have an example and some documentation on my QuickBooks integration wiki.
The IDN Forums are a good place to ask questions.
My recommendation to you would be to either:
Use the Web Connector and QuickBooks
and give up hope of keeping all of your data in one place. Cache the data in a real database, and update it by querying QuickBooks periodically. I'm almost done building a solution to do exactly this right now, and it works fantastic.
OR
Use a different account system. NetSuite is pretty nice. I'm not sure what else is out there, but if I were you I'd look for something SQL-based or with a strong SOAP/REST API.