To use the Webex chat you need to register for a Webex Account at https://developer.webex.com/.
Create WebEx app that will server as your bot
Go to https://developer.webex.com/my-apps and create the app that will be acting as your bot:
Create Spring Java App
It is not mandatory to use Spring - any way of creating Web App with Java framework can do. Also, a serverless apps or lambdas can be used to host the code.
We will use Spring Boot app:
- Groovy
- Gradle
- Spring Web
- Gson (parse JSON)
- Jsoup (parse HTML messages)
Gradle dependencies code:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'javax.json:javax.json-api:1.1.4'
implementation 'org.glassfish:javax.json:1.1'
implementation 'com.google.code.gson:gson:2.8.9'
implementation('org.jsoup:jsoup:1.14.3')
implementation 'org.codehaus.groovy:groovy'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
Install Spark SDK
Not to create models and services to interact with Webex and use HTTP calls, we can use the WebEx Java SDK (https://github.com/webex/webex-java-sdk (Spark Java SDK)).
It can be installed via Gradle - use gradle install to locate the code locally in maven repos.
App code
We will create RoomService that will interact with WebEx Room that exist in WebEx of our account.
RoomService.groovy
import com.anma.wbb.webexbotbsg.Room
interface RoomService {
List<Room> getRooms(teamId, type, sortBy, max);
public Room getRoom(String id);
}
RoomServiceImpl class that implements RoomService interface
import com.anma.wbb.webexbotbsg.Room
import com.anma.wbb.webexbotbsg.Spark
import org.springframework.stereotype.Service
@Service
class RoomServiceImpl implements RoomService {
String testBot = System.getenv("WEBEX_TEST_BOT");
String myToken = System.getenv("WEBEX_MY_TOKEN");
Spark spark = Spark.builder()
.baseUrl(URI.create("https://api.ciscospark.com/v1"))
.accessToken(bsgBot)
.build();
@Override
public Room getRoom(String id) {
Room room = spark.rooms().path("/${id}").get()
return room
}
@Override
List<Room> getRooms(teamId, type, sortBy, max) {
List<Room> rooms = new ArrayList<>()
spark.rooms()
.iterate()
.forEachRemaining(room -> {
// System.out.println(room.getTitle() + ", created " + room.getCreated() + ": " + room.getId());
rooms.add(room)
})
return rooms
}
}
So, now we have the service that gets rooms and its implementation. We can also add the services that will interact with messages that are present in rooms.
Top comments (0)