"Missing Translation" during change subscription amount - payment

6 month ago I worked with Bluesnap API. I wrote method that update Bluesnap subscription amount. Now I return to develop bluesnap connection and up to face with error "Missing Translation" when I use written method.
My method run PUT request by url https://sandbox.bluesnap.com/services/2/subscriptions/:subscription-id with headers
Content-Type:application/xml
Authorization:Basic API_AUTH_KEY
and request body
<?xml version="1.0"?>
<subscription xmlns="http://ws.plimus.com">
<override-recurring-charge>
<currency>ILS</currency>
<amount>55</amount>
</override-recurring-charge>
</subscription>
Now instead successful subscription recurring charge change I've got an error
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<messages xmlns="http://ws.plimus.com">
<message>
<error-name>UPDATE_SUBSCRIPTION_FAILED</error-name>
<description>Missing Translation</description>
</message>
</messages>
Does anyone have some ideas how to fix change subscription recurring charge?

The subscription is probably in a status that cannot be updated.
Log into your Bluesnap control panel
Click on Find a transaction from the left side bar
Choose "Subscription Id" from the list and insert your subscription
ID and search
Open any one of the orders
Locate the "Subscription Information" box
Check the "Status" field in that box. If it's anything other
than Active, then that's why.
Let me know what you see!
That error is weird though and I would report it to Bluesnap if I were you

The version you see is the documentation’s and not the API.
If you want only to use Bluesnap for payments and not for managing products/contracts then Payment API is the best option for you.
I point you to this URL that explain the various options of integrating with BlueSnap:
https://support.bluesnap.com/docs/which-bluesnap-solution-do-i-need

Related

Twilio Autopilot Handof with memory for on call conversation

I have an twilio autopilot similar to appointment schedule sample in twilio, I want it to have a memory before its even initiated, I have a B2C service, where I provide the platform to connect with their customers. Now each business offers different service so I want to be able to identify whose call my bot is attending and respond to the person based on that information.
Right now I have hardcoded business ID, but I want businesses to be able to handover to the bot with their business ID, I have read the documentation but it doesn't say how to handle call redirect as my Bot would be handling calls only.
Twilio developer evangelist here.
You can do this with Twilio Studio!
"Inbound Context lets you add data to the Autopilot Memory before starting a dialogue with the bot. In a Studio flow, it allows you to pass Flow variables created by other widgets in your flow seamlessly into Autopilot to be used in bot conversations. You can then parse these variables directly from the Memory JSON included in Autopilot's request to your application" (more info here):
-Memory.CarMake
-Memory.CarModel
You could alternatively use a URL like this one to pass Inbound Context with Memory where any message sent to a bot with this URL will insert CarModel, CarMake, and CarYear into the Autopilot Memory.
https://channels.autopilot.twilio.com/v1/<ACCOUNT_SID>/<ASSISTANT_SID>/twilio-messaging?Memory={"CarModel":"Diablo","CarMake":"Lamborghini","CarYear":"2019"}
That URL would go for a SMS bot and go in where you place the webhook URL for your Twilio phone number, but you could similarly modify it for WhatsApp (https://channels.autopilot.twilio.com/v1///twilio-messaging/whatsapp?Memory={"CarModel":"Diablo","CarMake":"Lamborghini","CarYear":"2019"}), Voice, Custom Channels (https://channels.autopilot.twilio.com/v1///custom/{YourCustomChannelName}?Memory={"CarModel":"Diablo","CarMake":"Lamborghini","CarYear":"2019"}) etc.
TwiML for voice would look like this:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Connect action="https://www.example.com/autopilot">
<Autopilot Memory={"CarModel":"Diablo","CarMake":"Lamborghini","CarYear":"2019"}>UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</Autopilot>
</Connect>
</Response>
Let me know if this helps at all!:D
You can utilize Inbound Context, as detailed below.
Inbound Context
https://www.twilio.com/changelog/inbound-context
Inbound Context lets you add data to the Autopilot Memory before
starting a dialogue with the bot. It can help you make the bot
experience more personalized and contextual by making information like
names, purchase histories, account numbers etc. stored in third-party
systems available directly in the bot conversation.
I found a way to handle it, and it may not be the best way, but its really helpful for me.
So what I have done is I created an API that responds back with Twml
Similar to this
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Connect action="https://www.example.com/autopilot">
<Autopilot Memory={"CarModel":"Diablo","CarMake":"Lamborghini","CarYear":"2019"}>UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</Autopilot>
</Connect>
</Response>
Now I purchased number and set its webhook URL to the API I created, within that API, I can pass parameter and then create memory with those params
Here is my API handler in Nodejs:
const VoiceResponse = require('twilio').twiml.VoiceResponse
const voice = (req, res, next) => {
const response = new VoiceResponse()
const connect = response.connect()
connect.autopilot({
TargetTask: 'greeting',
Memory: `{"companyId": "${req.params.id}"}`
},
process.env.AUTOPILOT_SID)
res.type('text/xml')
res.send(response.toString())
}
I hope this helps somebody who is looking to create dynamic memory based on different numbers, or to create a bot that works for multi-tenant platform

Error while trying obtain Azure Rate Card

I am trying to download the rate card for my Azure subscription and since this morning the request is ending in an HTTP 400. This is the error
<?xml version="1.0" encoding="utf-8"?>
<Error>
<Code>InvalidAuthenticationInfo</Code>
<Message>Authentication information is not given in the correct format. Check the value of Authorization header.
RequestId:757bb26d-801e-005b-45e9-d7361f000000
Time:2018-04-19T14:19:26.9289239Z</Message>
</Error>
The Api Call I make is. In the header I also pass the access token.
https://management.azure.com/subscriptions/<subscription id>/providers/Microsoft.Commerce/RateCard?api-version=2015-06-01-preview&$filter=OfferDurableId+eq+%27MS-AZR-0003P%27+and+Currency+eq+%27USD%27+and+Locale+eq+%27en-US%27+and+RegionInfo+eq+%27US%27
The same access token seems to be working fine for other purpose. But all of a sudden it seems the rate card API is failing.
Any ideas if anything changed on the Microsoft side ?
When you make a GET call with Authorization to the url
https://management.azure.com/subscriptions/<subscription id>/providers/Microsoft.Commerce/RateCard?api-version=2015-06-01-preview&$filter=OfferDurableId+eq+%27MS-AZR-0003P%27+and+Currency+eq+%27USD%27+and+Locale+eq+%27en-US%27+and+RegionInfo+eq+%27US%27
It will respond 400 as Status Code. But Also it will give 302 as status with a Location header like this :
Location : https://ratecard.blob.core.windows.net/ratecards/asdfghjk-db2f-4847-b3a0-d556072000f6%5CMS-AZR-0003P%5CUSD%5Cen-US%5CFalse/2015-06-01-preview/1bc08f92-830c-43c7-b8b4-6bc1d8875d0e.json?sv=2016-05-31&sr=b&sig=asdfghjkc6EbDNOUVEDc4M69YqHoH8ERQy5BJWKfSEU%3D&se=2018-04-24T07%3A00%3A19Z&sp=r&rsct=application%2Fjson
Now make a GET call to the location without Authorization header(cuz its already authenticated in previous call) and now you can get the Rate Card.
Same issue here, seems like MSFT is working on it: Authorization format fail #7423

Excel Online Add in- 403 when trying to autoshow and addin using a dev tenant

Update: It seems like the XML is not the problem and the issue has to do with using a dev tenant. As far as I can tell, it behaves properly using an Office 365 Home account, but throws a 403 when using an Office 365 Enterprise E3 Developer account. Why does this throw a 403? Is there anything I can do so we can test if we can get an addin taskpane to auto show with our templates?
Title Edit: from "Excel Online Add in- How to auto show taskpane" to "Excel Online Add in- 403 when trying to autoshow and addin using a dev tenant"
Original:
I'm trying to auto show an addin following this guide: https://dev.office.com/docs/add-ins/design/automatically-open-a-task-pane-with-a-document
Since the manifest we currently have in the store doesn't use
<TaskpaneId>Office.AutoShowTaskpaneWithDocument</TaskpaneId> I'm trying to test it out using Script Lab
The <we:webextension> xml is below
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<we:webextension xmlns:we="http://schemas.microsoft.com/office/webextensions/webextension/2010/11"
id="{8bc018e3-f345-40d4-8f1d-97951765d531}">
<we:reference id="WA104380862" version="1.1.0.2" store="en-US" storeType="OMEX"/>
<we:alternateReferences/>
<we:properties>
<we:property name="Office.AutoShowTaskpaneWithDocument" value="true"/>
</we:properties>
<we:bindings/>
<we:snapshot xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
</we:webextension>
In my <wetp:taskpane> I've tried setting visibility="1" and visibility="0", but neither seem to work. When it is 1 I get a 403 and this is my console
OsfRuntimeExcelWac.js:12 GET https://store.office.com/gatedserviceextension.aspx?=313351b2_2e0ee2d3_1500571610901&ui=en-US&rs=en-US&ad=US&fromAR=4 403 ()
e5191e878673e5c7.js:1 Uncaught ReferenceError: $ is not defined
at t.n (e5191e878673e5c7.js:1)
at new t (e5191e878673e5c7.js:1)
at e5191e878673e5c7.js:1
MicrosoftAjax.js:5 Refused to set unsafe header "Cookie"
HEAD https://store.office.com/gatedserviceextension.aspx?fromAR=3&corr=41fa9016-d510-90be-877b-25c612f780bb 403 ()
MicrosoftAjax.js:5 Request to /gatedserviceextension.aspx?fromAR=3&corr=41fa9016-d510-90be-877b-25c612f780bb came back with the status code:
When it's 0, there is nothing unusual in the console, but nothing happens.
What am I doing wrong? Am I just misunderstanding what this is supposed to accomplish? When visibility="1" it looks like it's trying to do something, but isn't allowed. Does it just mean I can't auto load Script Lab? Their manifest suggests that I can.
Any help is appreciated. We're looking at pushing a new version of our Manifest with the proper <TaskpaneId> to test this, but we wanted a proof of concept first.
This is indeed an issue with our code and a fix is underway. It only reproed in certain variations Office 365 for business customers. I'll update my answer once I get confirmation the fix has been fully rolled out.
How did you set
<we:property name="Office.AutoShowTaskpaneWithDocument" value="true"/>
in webextension?
Did you modify it directly?
You could try to set it by api in script Lab:
Office.context.document.settings.set("Office.AutoShowTaskpaneWithDocument", true);
Office.context.document.settings.saveAsync();

tcm:Error ErrorCode="80040302" can someone explain this error?

<?xml version="1.0" standalone="yes"?>
<tcm:Error ErrorCode="80040302" Category="16" Source="Kernel" Severity="2" xmlns:tcm="http://www.tridion.com/ContentManager/5.0"><tcm:Line ErrorCode="80040302" Cause="false" MessageID="4613"><![CDATA[Unable to get list of Publication items.]]><tcm:Token>RESID_4485</tcm:Token><tcm:Token>RESID_4452</tcm:Token></tcm:Line><tcm:Line ErrorCode="80040302" Cause="false" MessageID="4394"><![CDATA[Unable to Initialize TDSE object.]]><tcm:Token>RESID_4537</tcm:Token><tcm:Token>TDSE</tcm:Token></tcm:Line><tcm:Line ErrorCode="80040302" Cause="true" MessageID="16226"><![CDATA[Access is denied for the user IIS APPPOOL\publishedlist.]]><tcm:Token>IIS APPPOOL\publishedlist</tcm:Token></tcm:Line><tcm:Details><tcm:CallStack><tcm:Location>Tridion.ContentManager.Security.AuthorizationManager.LoadAccessToken(String,IEnumerable`1,IEnumerable`1)</tcm:Location><tcm:Location>Tridion.ContentManager.Security.AuthorizationManager.LoadAccessToken(String,String)</tcm:Location><tcm:Location>Tridion.ContentManager.Session..ctor(String,String,UserContext)</tcm:Location><tcm:Location>Tridion.ContentManager.BLFacade.SystemFacade.InitializeUserContext(UserContext,String,String)</tcm:Location><tcm:Location>UtilitiesTDS.GetUserContext</tcm:Location><tcm:Location>TDSE.Initialize</tcm:Location><tcm:Location>TDSE.GetListPublications</tcm:Location></tcm:CallStack></tcm:Details></tcm:Error>
this error occurs while executing this line :
TridionCollection<Component> components = new TridionCollection<Component>(folder.GetListItems(ListColumnFilter.XMLListExtended, rowFilter), "[contains(#IsShared,'false') and contains(#IsLocalized,'false') ]");
I think the error itself is quite clear: User IIS APPPOOL\publishedlist has no permission to access Tridion. Now you need to understand why this user is trying to connect. There are several ways to resolve it. Try to figure out who is trying to connect with this user. Apparently IIS, but why (is it expected to connect with this user?)
If you are logging in with user A and you see error like this, it means that you want to impersonate user A with IIS APPPOOL\publishedlist. Just add IIS APPPOOL\publishedlist to impersonation users of Tridion and it will be fine.
If this user is some kind of service user that you are want to use to perform maintenance tasks or so - just create user in CM
Next time, please post some more details of what you were trying to do and where exactly you have a problem, otherwise your question will be downvoted and you will hardly get any answer.

Why isn't Windows Live Writer working with my MetaWebLog API provider?

I'm developing a Web site that, amongst other things, provides blogging via Metaweblog API. I've gotten the API working quite well with several blog clients, but Windows Live Writer is killing me.
I've done a network trace to capture the actual back-and-forth traffic. Here's the results:
WLW asks for my blog URL, user name, and password. The URL is /item/list/type/blog/user/1/bloguser/1, and I provide this.
I see WLW make an HTTP request for that URL. It gets a response. That response includes both RSD and wlwmanifest link tags.
The next request from WLW is for /mwapi/rsd/bloguser/1, which is the correct URL.
The response is the MetaWeblog RSD response:
<?xml version="1.0" encoding="UTF-8"?>
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
<service>
<engineName>Cahoots2</engineName>
<engineLink>http://sourceforge.net/projects/cahoots/</engineLink>
<homePageLink>http://10.0.1.39:8888</homePageLink>
<apis>
<api name="MetaWeblog" blogID="1" preferred="true" apiLink="http://10.0.1.39:8888/mwapi/index" />
</apis>
</service>
</rsd>
The next request from WLW is to /mwapi/index. This is the method call to blogger.getUsersBlogs. The request is:
.<?xml version="1.0" encoding="utf-8"?>..
<methodCall>.. <methodName>blogger.getUsersBlogs</methodName>..
<params>.. <param>.. <value>..
<string>ffffffabffffffce6dffffff93ffffffac29ffffffc9fffffff826ffffffdeffffffc9ffffffe43c0b763036ffffffa0fffffff3ffffffa963377716</string>..
</value>..
</param>..
<param>..
<value>..
<string>CommunityAdmin</string>..
</value>..
</param>..
<param>..
<value>..
<string>password</string>..
</value>..
</param>.. </params>..</methodCall>
Forgive the periods; those are carriage returns. I'm grabbing this from a network trace.
The response from the server is also in XML:
.<?xml version="1.0" encoding="UTF-8"?>.<methodResponse><params><param><value>
<struct><member><name>blogid</name><value><int>1</int>
</value></member><member><name>url</name><value>
<string>http://10.0.1.39:8888/item/list/type/blog/user/1/bloguser/1</string>
</value></member><member><name>blogname</name><value>
<string>CommunityAdmin # Cahoots!</string></value></member></struct></value>
</param></params></methodResponse>.
This looks correct to me. The BlogID is correct, the URL is correct, and the blog name is correct.
WLW then repeats the original getUsersBlogs method call. It gets an identical response.
WLW then displays, "A successful connection was made to your account however the server reported that you do not currently have an active blog. Please ensure that your account with this provider is current before proceeding."
WLW has made no further HTTP requests beyond the ones I've described here.
Any clues whatsoever what I'm doing wrong? I've ensured that a wlwmanifest.xml file is available, and in fact any request for wlwmanifest.xml (e.g., /this/is/not/it/wlwmanifest.xml) will still return the correct file.
EDIT: I realized I wasn't returning an array from my getUsersBlogs method. When I changed that, the HTTP response from the method call was:
.<?xml version="1.0" encoding="UTF-8"?>.<methodResponse><params><param><value><array><data><value>
<struct><member><name>blogid</name><value><int>1</int></value></member>
<member><name>url</name><value>
<string>http://10.0.1.39:8888/item/list/type/blog/user/1/bloguser/1</string>
</value></member><member><name>blogname</name><value>
<string>CommunityAdmin # Cahoots!</string></value></member></struct></value>
</data></array></value></param></params></methodResponse>.
This looks identical to what's described at http://msdn.microsoft.com/en-us/library/aa905665.aspx as a sample response. But, WLW displayed an error - "Object reference not set to an instance of an object." Again, the actual response data doesn't include the periods - that's just how Network Monitor represents carriage returns.
I've done test calls from a test harness and it's working fine with identical responses. And, as I said, it's working with other blogging clients. Help.
WLW, it seems, is VERY picky about the MWA implementation. I was not capitalizing one of the method names correctly.

Resources