ExampleAssistantV1 with IBM Watson Unity SDK - c#

I have attached the ExampleAssistantV1.cs script to a character in Unity and obtained my services credentials (API key and service URL) from the Assistant I have created.
From my dialog page, I can only see/get my Assistant Name and Assistant ID, but nothing like Workspace ID. I have searched around my bluemix pages and account details for the Assistant service, but cannot seem to find anything about Workspace. Where is this?
The version date when I used Tone Analyzer in Unity worked with the current date (yesterday) so I wonder if the same applies to Assistant? In the code comments, there is no explanation of what this date actually is...
When I run Unity, I get the following error. I could only find two threads on this; both are closed now on GitHub. Could someone please help me understand what I am missing?
[RESTConnector.ProcessRequestQueue()][ERROR] URL: https://gateway-lon.watsonplatform.net/assistant/api/v1/workspaces//message?version=2018-12-27, ErrorCode: 400, Error: 400 Bad Request, Response: {"error":"URL workspaceid parameter 'message' is not a valid GUID.","code":400}
After running in Unity, when I look at my service page, I see a new instance created with a unity-sdk-example-workspace-deleteUpdated message. How did I cause this? Have I done something wrong that this appears new?

If you click the three dots in the image above next to conversation assistant you can click View API Details. You should be able to see your Workspace ID there.
You supply the version date to select the version of the service you want to use in your application. You will be using the last service release on or before the version date supplied. If you use today's date you will be using the latest release of the service.
The issue with the the call is there is no workspaceId supplied. Ideally there should be a null check for this param. I've created an issue for this: https://github.com/watson-developer-cloud/unity-sdk/issues/490
As for the unity-sdk-example-workspace-deleteUpdated it look like you ran the AssistantV1 example. The example runs through each operation in the service and attempts to invoke it. In this case it looks like it failed to delete the workspace or the example was stopped before it was deleted. It is safe to delete this workspace/skill.

Related

Deployed app function has empty host.json and no host keys

I'm having a weird issue with my Azure App Function and I can't find anything on this.
I republished my function without changing its code, but suddenly the function stopped working and I'm getting this message as soon as I navigate to the function's page on Azure:
Error:
Error retrieving master key.
If I navigate to the function's settings, I can see that no keys have been generated and that host.json file is emptpy. Browsing my functions' files using Kudu, however, shows that file contents are correct.
Two more things make this weirder:
The function correctly works locally
If I take the code for another function and I deploy it on this one, my function works correctly, meaning that it's not an issue related to my function's configuration but rather to its code
Do you guys have any pointer on this?
EDIT:
Let me add more details on this.
Let's say I have 2 solutions, A.sln and B.sln.
I also have 2 App Functions on Azure, let's say F_1 and F_2.
A.sln and B.sln have the very same structure, the only difference is in business logic.
Same applies for F_1 and F_2, their only differences are the related storage accounts, as each function has its own.
Currently A.sln is deployed on F_1 and B.sln on F_2, and the only one working is F_1.
If I deploy A.sln on F_2, F_2 starts working, so my idea is that there's something wrong in B.sln's code because A.sln works with the very same configuration.
The Function App has a reference to a Storage account in application settings AzureWebJobsDashboard, AzureWebJobsStorage and WEBSITE_CONTENTAZUREFILECONNECTIONSTRING (if you are running on a consumption plan). Either clearing out this storage or simply recreating it fixed the problem.
I would also recommend creating separate storage accounts for every Function app - at least as long as these hard-to-find bugs are present. It is a lot easier to fix these kind of issues when they are only affecting a single Function app.
I don't know if this is the case here, but I found out that in my case (new deployment of Function App v3) host.json is empty on Azure, if there is a comment line in it. Removing comments solved my problem and host.json file is now deployed properly.
One of the reasons could be, the key inside the storage account might have been rotated. So, the connection strings referenced inside the AzureWebJobsDashboard and AzureWebJobsStorage of the azure function will be different.
Solution: Go to the storage account referenced in AzureWebJobsDashboard and AzureWebJobsStorage -> Access Keys -> Copy the connection string under key1 and use this for the AzureWebJobsDashboard and AzureWebJobsStorage.

cannot generate early bound types CRM 2013 online

In order to follow this tutorial (http://msdn.microsoft.com/en-us/library/gg695790.aspx) I need to generate some early bound types. I cannot get the tool to work.
I've downloaded the latest CRM 2013 SDK
I've got a CRM2013 online trial account.
the URL I use is the one I got from the CRM2013->Settings->Customizations->Developer recources->organisation service.
the credential i use the default user (admin) from the CRM2013 online trial.
lets say it's John360
So the URL for CRM is like https://john360.crm4.dynamics.com/
user: john#john360.onmicrosoft.com
pwd: pass
organisationService: https://john360.api.crm4.dynamics.com/XRMServices/2011/Organization.svc
when I try the command like:
CrmSvcUtil.exe /codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration" /out:Xrm\Xrm.cs /url:https://john360.api.crm4.dynamics.com/XRMServices/2011/Organization.svc /username:john /domain:john360.onmicrosoft.com /password:pass /namespace:Xrm /serviceContextName:XrmServiceContext
i get
value cannot be null. Parameter name: identityProvider
I also tried some Obvious other with or without quotes, with the 'domain' appended to the username, nothing works. I added the program to the firewall.
I also tried this tool https://xrmearlyboundgenerator.codeplex.com/
It also has problems connecting to the server. I tried with the latest version and with these connection settings: use CRM online and selected the crm4.dynamics.com
Login: john#john360.onmicrosoft.com, password: pass.
If I select 'Get Orgs.' I get the error
'an unsecured or incorrectly secured fault was received from the other party'
I've now also tried this route: http://code.msdn.microsoft.com/SdkSoapjs-Entity-Class-14ca830f
The program gives the same error as the other generator.
edit:
I actually got a bit further... with this command:
CrmSvcUtil.exe /codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration" /out:Xrm.cs /url:"https://john360.api.crm4.dynamics.com/XRMServices/2011/Organization.svc" /username:"john#john360.onmicrosoft.com" /password:"pass" /namespace:Xrm /serviceContextName:XrmServiceContext /serviceContextPrefix:
it resultet in error:
Metadata contains a reference that cannot be resolved.
I didn't do any customization changes to my trail, so I'm not sure what this is about. Any suggestions are welcome.
Using the XrmToolBox as a method of connecting to CRM, I've created a GUI front end wrapper over the CrmSvcUtil.exe. It adds a lot of additional features, but most importantly for you, it creates the commandline required to generate the entities for you. Download it from the plugin store within the Xrm Tool Box, and never have this problem again!

How can I debug this web service?

I have a simple web service that looks something like this:
[WebMethod]
public OrderForecastItem GetOrderForecast(int shipTo, string catalogName, bool showPricing)
{
return OrderForecastManager.GetOrderForecast(shipTo, catalogName, showPricing);
}
I'm calling it from another place in a fairly simple way:
using (OrderForecastWS.OrderForecastWS service = new OurSite.Web.Reporting.OrderForecastWS.OrderForecastWS())
{
OrderForecastItem orderForecastItems = service.GetOrderForecast(2585432, "DENTAL", false);
}
After some gymnastics to get the systems to understand that I'm talking about the same type of objects on the client and server sides (I had to open the Reference.cs file inside my Web References, delete the generated OrderForecastItem and add a link to our real OrderForecastItem), the system runs and attempts to get the item.
Unfortunately, it now bombs during the service call, claiming:
Exception There is an error in XML document (1, 1113).(InvalidOperationException)
I can go to the web service in a browser, put in the same values, and I get a seemingly valid XML response. (It looks okay to me, and I ran it through the XML parser at W3Schools, and it cleared it.)
I think the numbers in the error are supposed to be the line and character number...but the browser seems to reformat the xml document, so I can't easily see what the original (1, 1113) location is.
I don't see an easy way to intercept the response and examine it, since it seems to be blowing up as soon as it gets it.
How can I debug this?
If you control the service, you can step into it. If it is a part of your solution and hosted in VS WebDev on your local box, just F11 from Visual Studio, if service is hosted remotely (eg by IIS on other computer) run remote debugging tool on service host msdn, and then you will be able to step in to the service remotely.
By the way, you can tell Visual Studio to re-use objects from referenced libraries for types from the service: just pick configure Service Reference from service context menu and tell which libraries to re-use.
On second thought this error may happen if returned XML could not be deserialized into your business object. May happen when class is changed on either side, or you are trying to use different version of business library than service is using.
If you use Firefox, I'd recommend Firebug. You'll be able to easily view the response from the website in its original format, which might get you closer to the line and position you're looking for.

Error "A type load exception has occurred." using apns-sharp with mono

I'm trying to move my APN backoffice from PHP to C# for performance issue. Bear with me, I'm new to C# and mono.
I've just downloaded MonoDevelop 2.8.6.4 and APNS-sharp merge 26 on my OSX 10.7.2
I opened the entire solution with all libraries and test executables and built the entire solution without errors. I modified the fields (token id, cert file, ...) in the Program.cs in JdSoft.Apple.Apns.Notifications.Test to meet my specs.
After a few tries I managed to get my certificate file OK and the connection to Apple servers is now up. I see the message saying I'm connected in the output of the application.
Probleme comes now. Everytime the application tries to send a message to Apple I get the error "A Type load exception has occured". I tried a little debug and the error seems to come from the NotificationPayload constructor.
Doing step by step follow up, it appears the NotificationAlert is correctly instantiated inside the NotificationPayload constructor. The error appears when coming back to the Notification constructor where the Payload member appears in the debugger as "A type load exception has occurred." instead of an object.
From there the Notification object ends up with the same behavior.
From my research on the Internet this could come from the version of Newtonsoft.Json.Compact.dll but I have no idea what to do with this piece of information.
For information I can see the same error when running the compiled test on my CentOS server.
And for more information the application message (changed ex.Message to ex.ToString() in the test program to get a full error) :
Notification Queued!
Sleeping 15000 milliseconds before next Notification...
Connecting...
Connected...
Error: System.TypeLoadException: A type load exception has occurred.
at JdSoft.Apple.Apns.Notifications.Notification.ToBytes () [0x0006c] in /Users/laurent/Downloads/Redth-APNS-Sharp-595275f 2/JdSoft.Apple.Apns.Notifications/Notification.cs:90
at JdSoft.Apple.Apns.Notifications.NotificationChannel.Send (JdSoft.Apple.Apns.Notifications.Notification notification) [0x00000] in /Users/laurent/Downloads/Redth-APNS-Sharp-595275f 2/JdSoft.Apple.Apns.Notifications/NotificationChannel.cs:371
at JdSoft.Apple.Apns.Notifications.NotificationConnection.workerMethod () [0x00035] in /Users/laurent/Downloads/Redth-APNS-Sharp-595275f 2/JdSoft.Apple.Apns.Notifications/NotificationConnection.cs:381
I didn't put the code, as I didn't change anything from the one you can see at https://github.com/Redth/APNS-Sharp.
I send an SOS to all mono guru around.
Have a nice day fellow developers and thanks in advance for your help and time. Any suggestion is gladly welcome.
(As the OP can't post the answer himself...)
In this particular case, the solution was to fetch the latest version of Newtonsoft.Json.Compact.dll.
In general, you need to try to get as much information from the exception as possible, to find out what it was trying to load - then check that the problematic library is present, and that you've got the version everything else expects.

Windows Update API - Report Client Status

I have an application that uses WSUS client API to download and install updates. I have been trying to figure out how to report the client's status to the server once installs are complete, without having to run: wuauclt /detectnow from the command line.
The update log in C:\Windows\WindowsUpdate.txt does show the reporting event: 0 Success Pre-Deployment Check Reporting Client Status
So it seems that there is a way to report the status, I just can't find it in the API documentation.
I don't really know much about these APIs (maybe it would be helpful if you clarify what exactly you're doing), but this looks promising:
From the Windows Update Agent (WUA) API Reference:
IDownloadProgress InterfaceSeems like you can obtain this from IDownloadJob::GetProgress
IInstallationProgress InterfaceSeems like you can obtain this from IInstallationJob::GetProgress
If you don't want to keep polling these objects for new progress, it looks like there is also the following, which your code can implement:
IDownloadCompletedCallback
IDownloadProgressChangedCallback
IInstallationCompletedCallback
IInstallationProgressChangedCallback
I don't know if this is what you're asking for, but this is my guess. Hope that helps.

Categories

Resources