Dequeue a Member
You're ready for this how-to guide if you've got the following:
A FreeClimb account
A registered application
A configured FreeClimb Number
Your tools and language installed
Node.js
In addition to retrieving a queued Call's metadata, the getQueuesRequester
provides a means to dequeue the Call associated with a callId
and queueId
. The queueId
and callId
are not provided in this example.
Create your package.json file and save in the root directory of your project:
{
"name": "node-dequeue-member-how-to-guide",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"@freeclimb/sdk": "^3.8.0",
"dotenv": "^8.1.0"
}
}
Install the package by running the following in the command line/terminal:
yarn install
Example Code:
require("dotenv").config();
const freeclimbSDK = require("@freeclimb/sdk");
// your freeclimb API key and accountId (available in the Dashboard) - be sure to set up environment variables to store these values
const accountId = process.env.ACCOUNT_ID;
const apiKey = process.env.API_KEY;
const queueId = "your-queue-id";
const callId = "your-call-id";
const freeClimbConfig = freeclimbSDK.createConfiguration({
accountId,
apiKey,
});
const apiInstance = new freeclimbSDK.DefaultApi(freeClimbConfig);
// Invoke dequeue queued call
apiInstance
.dequeueAMember(queueId, callId)
.then((member) => {
/* Use the queue member */
})
.catch((err) => {
/** Catch Errors */
});
Java
In addition to retrieving a queued Call's metadata, the getQueuesRequester
provides a means to dequeue the Call associated with a callId
and queueId
. The queueId
and callId
are not provided in this example.
Create your build.gradle file and save it to the root directory in your project:
/*
* This file was generated by the Gradle 'init' task.
*
* This is a general purpose Gradle build.
* Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds
*/
buildscript {
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
//Add the dependency
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:2.1.6.RELEASE"
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
bootJar {
baseName = 'gs-spring-boot'
version = '0.1.0'
}
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
compile "org.springframework.boot:spring-boot-starter-web"
testCompile "junit:junit"
compile 'com.github.FreeClimbAPI:FreeClimb-Java-SDK:3.0.0'
}
sourceSets {
main {
java {
srcDirs = ['src'] // changed line
}
}
}
Build the file by running the following in your terminal/command line:
gradle build
Example code:
/*
* 1. RUN PROJECT WITH COMMAND:
* `gradle build && java -Dserver.port=0080 -jar build/libs/gs-spring-boot-0.1.0.jar`
* 2. RUN CURL COMMAND TO GET LIST OF QUEUES:
`curl {baseUrl}/dequeueQueueMember -d 'queueId={queueId}&callId={callId}'`
* 3. EXPECT JSON TO BE RETURNED:
* {"uri":"/Accounts/{accountId}/Queues/{queueId}/Members/{callId}",
"callId":"{callId}",
"waitTime":{waitTime},
"position":{position},
"dateEnqueued":"{dateEnqueued}"}
*/
package main.java.dequeue_member;
import com.vailsys.freeclimb.api.FreeClimbClient;
import com.vailsys.freeclimb.api.FreeClimbException;
import com.vailsys.freeclimb.api.queue.Queue;
import com.vailsys.freeclimb.api.queue.QueueCreateOptions;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.vailsys.freeclimb.percl.Dequeue;
import com.vailsys.freeclimb.webhooks.queue.QueueActionCallback;
import java.util.LinkedList;
import com.vailsys.freeclimb.api.queue.QueueList;
import java.util.ArrayList;
import com.vailsys.freeclimb.api.queue.member.Member;
import com.vailsys.freeclimb.api.queue.member.MemberList;
@RestController
public class DequeueMemberController {
// Get base URL, accountID, and apiKey from environment variables
private String baseUrl = System.getenv("HOST");
private String accountId = System.getenv("ACCOUNT_ID");
private String apiKey = System.getenv("API_KEY");
@RequestMapping("/dequeueQueueMember")
public Member dequeueQueueMember(String queueId, String callId) {
try {
FreeClimbClient client = new FreeClimbClient(accountId, apiKey); // Create FreeClimbClient object
// Invoke update method to dequeue queued call
Member member = client.queues.getMembersRequester(queueId).dequeue(callId);
// Can examine CallId, DateEnqueued, Position, URI, and WaitTime for this member
return member;
} catch (FreeClimbException pe) {
System.out.println(pe.getMessage());
}
return null;
}
}
C#
In addition to retrieving a queued Call's metadata, the getQueuesRequester
provides a means to dequeue the Call associated with a callId
and queueId
. The queueId
and callId
are not provided in this example.
Imports used:
using com.freeclimb.api;
using com.freeclimb.api.queue;
Example code:
// Create FreeClimbClient object
FreeClimbClient client = new FreeClimbClient (getFreeClimbAccountId (),
getFreeClimbApiKey ());
// Invoke method to update the QueueMeber to dequeue it from the queue
QueueMember queueMember = client.getQueuesRequester.updateQueueMember(queueId, callId);
Updated about 2 months ago