Hope that anyone encountered this issue, as I'm guessing not much people are working with this API.
I created an outbound campaign using the API, and I tried to import records to it.
I was able to do that, but I had an issue, when I'm trying to load records when Phone02 is empty, it won't let me import those records.
The output I'm getting is:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <apiErrors> <apiError> <errorData>fileContent</errorData> <errorDetail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="bulkCsvErrorDetail"> <column>5</column> <error> <errorData>Phone02</errorData> <errorMessage>The format of this field is incorrect. Valid characters are 0-9, #, and *.</errorMessage> <errorType>invalidInput.invalidChars</errorType> </error> <line>2</line> </errorDetail> <errorType>invalidInput.bulk.invalidFileContent</errorType> </apiError> </apiErrors>
This is how I'm trying to import:
<import> <fileContent> <![CDATA[ AccountNumber,FirstName,LastName,Phone01,Phone02,TimeZoneBias,DstObserved LwxbZcYdVQGpyYDUYu4WRK3QQVSe4,Name,LastName,12126186597,,, ]]> </fileContent> <delimiter>,</delimiter> </import>
Only when I'm inserting a value in Phone02 it will import the record via API.
Now I understand that when creating an outbound campaign using the API, it also generates automatically an import rule for it. And after viewing a table called Import_Rule_Clause, I see that there's only one record generated for this specific campaign and it is Phone01, so I'm guessing because it has no Phone02 in there that is stating 'NullEnabled' (field) = 'Y', so the API won't be able to bypass that.
Of course I will not add manually a record for this campaign with Phone02 to the above table, as it'll may crash my system as it is not allowed.
Is there something I can do here?
I haven't worked on outbound APIs, so would not comment on that, but dont you have access to Configuration Manager where you can review Query and Import rules ?
I wish it was that easy. But when creating an outbound campaign using the API, it is making those objects invisible to the Configuration Manager.
Not only that, but they are stating that using Outbound API methods, like delete / update / etc, can be used only on campaigns created by the API and not by the configuration manager. I don't know why they did it, but this is STUPID.
Anyway, if I'm looking on the import rule itself in the database, I can see a field called 'APIGenerated' and it is set to 'Y'. So all the import rules that are set to 'Y' are invisible to the configuration manager (and the campaign and query rule).
At one of the presentations on this tool, we suggested that those items created by the API at least be visible in Configuration Manager, even if they were read only. This would allow maintenance personnel and anyone else to know to look in one place for the items. I don't know if it was added to any type of road map, unfortunately. I imagine it is the same scenario with PCCE and the single pane of glass (SPOG) where API is visble to API only and things created in the SPOG are only editable via SPOG?
Unfortunately I couldn't find any solution for Phone02... :(
I thought about leaving the API and create some basic API of mine that will load the records to some temporary database and from there it'll create CSV files according the import rules after manually creating the campaigns fully in the Configuration Manager. That's a shame that we cannot override this small thing in the API.
BTW, I had an idea but had to no time to test this out. Maybe you'll want to test this and tell us the results.
I thought maybe somehow using the Do Not Call API.
The general idea is if you want the Phone02 will be NULL that you'll place something like '1111111111' instead.
And then place this number '1111111111' into the list that it'll consider as Do Not Call numbers.
That way I'm guessing that the campaign manager will check this list before it'll command some random free dialer port to dial this number, and that way no dialer ports will be used to call those Do Not Call numbers.
It is a workaround of course, but can be a cool one if it works :)