Conducted annually by the National Council of Architectural Registration Boards (NCARB), the survey provides exclusive insight into data from the architectural licensing boards of the 50 U.S. states, the District of Columbia, Guam, the Northern Mariana Islands, Puerto Rico, and the U.S. Virgin Islands.
The increase in the number of architects in 2019 is especially apparent when compared to the U.S. population: while the number of architects licensed in the U.S. has risen over 10 percent in the last decade, the total U.S. population has risen just 6 percent, according to data from the U.S. Census Bureau.
The 2019 Survey of Architectural Registration Boards also reveals that there continue to be more reciprocal (out-of-state) licenses than resident licenses issued across the U.S. There were 137,639 reciprocal licenses reported in 2019, approximately 10 percent more than in 2018 and over 20,000 higher than the number of individual architects. This marks the largest increase seen in recent years and could be a result of many factors, including market needs and efforts to publicize pathways to reciprocity for architects.
To achieve these goals, NCARB works with its Member Boards and volunteers to develop and facilitate standards for licensure, including the national examination and experience program. NCARB also recommends regulatory guidelines for licensing boards and helps architects expand their professional reach through the NCARB Certificate.
Unfortunately, the "Search External Contacts" action and the "Get External Contact" action are only available in Architect for email and chat flows - not for voice.
See here: -external-contacts-action/
and here: -external-contact-action/
Having said that, you could technically invoke a PureCloud DataAction from the Architect flow, that would leverage Platform API and its methods related to ExternalContacts.
See here for the PureCloud Data Action: -purecloud-data-actions-integration/
And here for the External Contacts API methods:
Or would that be to perform a search for a contact first? Based on what information: phone number, name of the contact, .... ?
Searching may not be trivial to implement as depending on what you search for, your search request could bring 0 results, 1 result, or multiple ones (quite complex - ex: searching with a lastname and finding different people/contacts with the samelastname).
Actually, We need to set up a call flow which has to transfer the call flow to a phone number but which will be updated every weeks by a person from the team. I don't want him/her to update it directly from on the architect for basic security reason. So i was looking for a way to get it via API.
What I wanted to do was to create an external contact that will always be the same (so same id) but where the phone number will be changed if necessary. This way, teams will only have to change the number on the contact part and not on the architecture.
The architect will be in charge of retrieving the information directly by API action.
Ok. That makes this a bit easier. So we can assume the contactId is known and we know which phone number (I mea type of phone number) to look for.
Give me maybe a day or 2. Not that it takes this long for the data action But I need to finish few things and I will try to create this data action in my system to figure out what contract and configuration should be.
In the mean time, you could maybe start with the procedure to setup the PureCloud data action integration (adding the integration in your system - part of the ones exposed in Admin - Integrations after clicking the + icon), create the OAuth client for this integration and associate it with the integration.
Genesys Cloud Resource Center About the Genesys Cloud data actions integration - Genesys Cloud Resource CenterThe Genesys Cloud data actions integration uses static actions and custom actions... [More]
So that is enough. I mean you'll just need to add a data action, pointing to this same integration.
You may need to update the OAuth client for a role/permission that allows to query contacts, if it is not the case already.
You will need to check that the OAuth client (Client Credentials Grant) that you re using in your PureCloud Data Actions integration has one role with the following permission:
"externalContacts - contact - View"
If among the roles, that are already assigned to your OAuth client, this permission is not present/assigned in any of them, you can:
Note that once you publish a data action, you can get set it back to Draft mode to edit/modify it.
BUT once it has been published (once), you can only change the configurations.
If you need to change the contracts, you will need to create a new Data Action.
The DataAction will take the contactId as input parameter.
If the contactId which is passed to the data action is invalid (unknown contactId), or if you pass it via a variable with an empty string (by mistake), the Data Action will exit via the Failure path.
Otherwise, if successful, you will exit via the Success path.
I have created output variables for the 4 different possible phone numbers you can provision on a contact - work/cell/home/other phones.
If you have configured a work phone number in your contact, it will be available in the corresponding output (contactWorkPhone).
As it is not mandatory to configure phone numbers on a contact or if only a subset of them were configured, I have managed the lack of phone number the following way.
If you want to retrieve the home phone, and it was not configured/defined in the contact, the output variable (contactHomePhone) will be equal to "UNKNOWN"
If you want to cope with all possible errors, you may want to test the phone variable and check if it is different from "UNKNOWN"
Otherwise, you can use it directly as Number in the "Transfer to Number" block (under Toolbox - Transfer) in the Architect flow.
In previous version, I was making that test in the input configuration - replacing the empty string with some invalid token ("invalid") using Velocity.
This means that the PureCloud API request was still made with that invalid token/contactId.
I thought I could use Length in a decision object, but I am getting an error and I believe its because Length is looking for characters.
However, I've been looking to see if I need to use something more precise like toBool or toInt in order to use a decision object to validate if the caller entered 6-digits. In my test case I keep going down the false path.
Long answer:
The collect input data variable is a string, so the Length function can be applied to it. If the expression in your decision action is Length(Task.digits), then when you open the large expression editor
You will see a note that architect is using the ToBool function to convert an integer to a boolean. This is important because ToBool(X) returns true only if X is 0. Assuming Task.digits = "123456", Length(Task.digits) = 6 so ToBool(Task.digits) = false.
IF I wanted to create an in-queue flow to send the call to voicemail if a caller doesn't wish to wait and only send it to the user assigned the skill we discussed in the previous entry (above), is it possible to write an expression to do so?
We don't want it to be assigned as a static value to one agent (ie. transfer to user "alonso miller"), but perhaps route to the voicemail of the agent assigned the skill that the caller entered if they are not available...
I hope that made sense.
Yes there is a way to do that. First, in your inbound flow, add a set participant attribute action to save the agent's name (or email or id-something guaranteed to be unique). Do this prior to the transfer to acd action. In your in-queue flow, use the get participant attribute action to retrieve the agent's name, then use the parallel arrays approach to convert that string into a User variable. -string-value-typed-value/. That would allow to you to set the voicemail transfer target to the User variable.
Also I think your reply is for -you-use-a-webservice-to-determine-an-acd-skill-and-route-a-call/2054/2 instead of this thread. In which case if you use individual queues instead of individual skills for each agent, you don't need to go through the parallel arrays approach in the in-queue flow. You can just change the target type of the voicemail action to Queue instead of User and it will automatically go to the correct queue. I'm not trying to push one approach over the other, I'm just a fan of less typing.
If I use a get data wouldn't I need to add all of the agent's names' assigned in the queue in the get data object? When I read this at face value it makes me presume that I add the agent's name as a static value, so if the call is not for agent Joe and its for Agent Bob and I have the get data for agent Joe, then Bob would get the voicemail that is for originally agent Joe.
I am assuming I would have to make a list of all the agents in an array, is that a fair statement?
No, you do not need to add all the agents in the set participant data action, just the one the call is meant for. In the in-queue flow, you would create a collection of User variables, one for every agent in your organization. This would be similar to the Task.Queues variable in the documentation example. Then create a string collection of agent names; this would be similar to Task.QueueNames in the example. Make sure the order of the elements in these collections exactly match. You will also need to decide what to do if the agent's name fetched by the get participant attribute action isn't a member of your agent name collection (this would happen when a new agent is created but you haven't updated the in-queue flow yet, or there's a typo so the agent's name doesn't match the collection). Then use the expression in the documentation to figure out which User matches the string found by the get participant data action.
The site is secure.
Thehttps:// ensures that you are connecting to the official website and that anyinformation you provide is encrypted and transmitted securely.