Hello I am trying to develop a ParticipantsClient service object in my dataflow application.
I was getting a 'NoSuchMethod' ERROR duing the Runtime . Can you please help with correct implementation of the ParticipantsClient below is my code snippet.
=====================================================================================
package My Package;
import com.google.protobuf.Duration;
import org.apache.beam.sdk.metrics.Counter;
import org.apache.beam.sdk.transforms.DoFn;
import org.apache.beam.sdk.values.TupleTag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.cloud.dialogflow.v2beta1.ParticipantsClient;
import com.google.cloud.dialogflow.v2beta1.Participant;
import com.google.cloud.dialogflow.v2beta1.*;
import org.apache.beam.sdk.metrics.Distribution;
import org.apache.beam.sdk.metrics.Metrics;
import java.io.IOException;
/**
* This BQ pardo function will do the transformation from event to table row.
*/
public class LabelBQParDo extends DoFn<TranscriptionMessage.ConversationEvent,TableRow> {
static final Logger LOG = LoggerFactory.getLogger(com.bell.LabeltoBQ.dataflow.transforms.LabelBQParDo.class);
final TupleTag<TranscriptionMessage.ConversationEvent> DLQ;
final TupleTag<TableRow> SUCCESS;
private transient ParticipantsClient participantsClient;
//private transient ParticipantsGrpc participantsClient1;
public LabelBQParDo(TupleTag<TranscriptionMessage.ConversationEvent> DLQ, TupleTag<TableRow> SUCCESS) {
this.DLQ = DLQ;
this.SUCCESS = SUCCESS;
}
/**
* Template method to open any resources
*
* @throws IOException
*/
@StartBundle
public void startBundle() throws IOException
{
try
{
long startTime=System.currentTimeMillis();
LOG.debug("Creating the ParticipantsClient service client");
this.participantsClient = ParticipantsClient.Create();
long endTime=System.currentTimeMillis();
LOG.debug("Time taken to create the participant client" + (endTime -startTime)+"ms");
} catch (IOException e)
{
LOG.error("ERRLabel101 - Unable to start participantsClient ", e.getMessage());
throw e;
} catch (Exception e){
LOG.error("ERRLabel101 - Unable to start participantsClient ", e.getMessage());
throw e;
}
}
/**
* Template method to close any resources
*/
@FinishBundle
public void finishBundle()
{
if (this.participantsClient != null)
{
long startTime=System.currentTimeMillis();
this.participantsClient.close();
long endTime=System.currentTimeMillis();
LOG.debug("Time taken to close the participantsClient " + (endTime -startTime)+"ms");
}
}
@ProcessElement
public void processElement(ProcessContext c,MultiOutputReceiver out) {
TranscriptionMessage.ConversationEvent event = c.element();
String conversationId =event.getConversation();
String ParticipantId =event.getNewMessagePayload().getParticipant();
try{
Participant participant = getParticipantUtil(ParticipantId);
System.out.println("+++++++++Participant"+participant);
String actor = participant.getRole().toString();
String name = participant.getName().toString();
String label = "";//participant.SipRecordingMediaLabel.toString();
System.out.println("+++++name:"+name+"actor"+actor+"label"+label);
} catch (Exception e) {
S.O.P(EEROR)
}
}
private void log(Params) {
LOG.debug(logMessage.replace("\r","").replace("\n",""));
}
private Participant getParticipantUtil(String projectID, String conversation, String participant)
{
Participant participantResponse = null;
//https://cloud.google.com/dotnet/docs/reference/Google.Cloud.Dialogflow.V2/latest/Google.Cloud.Dialog...
//ParticipantName participantName =
//GetParticipantRequest request = new GetParticipantRequest
//{
// ParticipantName = ParticipantName.FromProjectConversationParticipant(projectID, conversation, participant);
//};
try {
participantResponse = participantsClient.getParticipant(participant);
}catch (Exception e)
{
LOG.error("ERROR while getting the particiapant label details "+e);
return null;
}
System.out.println("PARTCIPANT======="+participantResponse.toString());
return participantResponse;
}
}
=====================================================================================
ERROR
2021-08-06T15:56:35.479913830ZError message from worker: java.lang.NoSuchMethodError: com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.setMtlsEndpoint(Ljava/lang/String;)Lcom/google/api/gax/rpc/StubSettings$Builder; com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.createDefault(ParticipantsStubSettings.java:541) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.access$200(ParticipantsStubSettings.java:404) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings.newBuilder(ParticipantsStubSettings.java:375) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.createDefault(ParticipantsSettings.java:219) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.access$000(ParticipantsSettings.java:200) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings.newBuilder(ParticipantsSettings.java:182) com.google.cloud.dialogflow.v2beta1.ParticipantsClient.create(ParticipantsClient.java:109) com.bell.LabeltoBQ.dataflow.transforms.LabelBQParDo.startBundle(LabelBQParDo.java:68) java.lang.NoSuchMethodError: com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.setMtlsEndpoint(Ljava/lang/String;)Lcom/google/api/gax/rpc/StubSettings$Builder; com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.createDefault(ParticipantsStubSettings.java:541) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.access$200(ParticipantsStubSettings.java:404) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings.newBuilder(ParticipantsStubSettings.java:375) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.createDefault(ParticipantsSettings.java:219) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.access$000(ParticipantsSettings.java:200) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings.newBuilder(ParticipantsSettings.java:182) com.google.cloud.dialogflow.v2beta1.ParticipantsClient.create(ParticipantsClient.java:109) com.bell.LabeltoBQ.dataflow.transforms.LabelBQParDo.startBundle(LabelBQParDo.java:68) java.lang.NoSuchMethodError: com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.setMtlsEndpoint(Ljava/lang/String;)Lcom/google/api/gax/rpc/StubSettings$Builder; com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.createDefault(ParticipantsStubSettings.java:541) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.access$200(ParticipantsStubSettings.java:404) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings.newBuilder(ParticipantsStubSettings.java:375) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.createDefault(ParticipantsSettings.java:219) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.access$000(ParticipantsSettings.java:200) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings.newBuilder(ParticipantsSettings.java:182) com.google.cloud.dialogflow.v2beta1.ParticipantsClient.create(ParticipantsClient.java:109) com.bell.LabeltoBQ.dataflow.transforms.LabelBQParDo.startBundle(LabelBQParDo.java:68) java.lang.NoSuchMethodError: com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.setMtlsEndpoint(Ljava/lang/String;)Lcom/google/api/gax/rpc/StubSettings$Builder; com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.createDefault(ParticipantsStubSettings.java:541) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.access$200(ParticipantsStubSettings.java:404) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings.newBuilder(ParticipantsStubSettings.java:375) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.createDefault(ParticipantsSettings.java:219) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.access$000(ParticipantsSettings.java:200) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings.newBuilder(ParticipantsSettings.java:182) com.google.cloud.dialogflow.v2beta1.ParticipantsClient.create(ParticipantsClient.java:109) com.bell.LabeltoBQ.dataflow.transforms.LabelBQParDo.startBundle(LabelBQParDo.java:68) java.lang.NoSuchMethodError: com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.setMtlsEndpoint(Ljava/lang/String;)Lcom/google/api/gax/rpc/StubSettings$Builder; com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.createDefault(ParticipantsStubSettings.java:541) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.access$200(ParticipantsStubSettings.java:404) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings.newBuilder(ParticipantsStubSettings.java:375) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.createDefault(ParticipantsSettings.java:219) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.access$000(ParticipantsSettings.java:200) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings.newBuilder(ParticipantsSettings.java:182) com.google.cloud.dialogflow.v2beta1.ParticipantsClient.create(ParticipantsClient.java:109) com.bell.LabeltoBQ.dataflow.transforms.LabelBQParDo.startBundle(LabelBQParDo.java:68) java.lang.NoSuchMethodError: com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.setMtlsEndpoint(Ljava/lang/String;)Lcom/google/api/gax/rpc/StubSettings$Builder; com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.createDefault(ParticipantsStubSettings.java:541) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.access$200(ParticipantsStubSettings.java:404) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings.newBuilder(ParticipantsStubSettings.java:375) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.createDefault(ParticipantsSettings.java:219) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.access$000(ParticipantsSettings.java:200) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings.newBuilder(ParticipantsSettings.java:182) com.google.cloud.dialogflow.v2beta1.ParticipantsClient.create(ParticipantsClient.java:109) com.bell.LabeltoBQ.dataflow.transforms.LabelBQParDo.startBundle(LabelBQParDo.java:68) java.lang.NoSuchMethodError: com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.setMtlsEndpoint(Ljava/lang/String;)Lcom/google/api/gax/rpc/StubSettings$Builder; com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.createDefault(ParticipantsStubSettings.java:541) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.access$200(ParticipantsStubSettings.java:404) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings.newBuilder(ParticipantsStubSettings.java:375) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.createDefault(ParticipantsSettings.java:219) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.access$000(ParticipantsSettings.java:200) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings.newBuilder(ParticipantsSettings.java:182) com.google.cloud.dialogflow.v2beta1.ParticipantsClient.create(ParticipantsClient.java:109) com.bell.LabeltoBQ.dataflow.transforms.LabelBQParDo.startBundle(LabelBQParDo.java:68) java.lang.NoSuchMethodError: com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.setMtlsEndpoint(Ljava/lang/String;)Lcom/google/api/gax/rpc/StubSettings$Builder; com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.createDefault(ParticipantsStubSettings.java:541) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings$Builder.access$200(ParticipantsStubSettings.java:404) com.google.cloud.dialogflow.v2beta1.stub.ParticipantsStubSettings.newBuilder(ParticipantsStubSettings.java:375) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.createDefault(ParticipantsSettings.java:219) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings$Builder.access$000(ParticipantsSettings.java:200) com.google.cloud.dialogflow.v2beta1.ParticipantsSettings.newBuilder(ParticipantsSettings.java:182) com.google.cloud.dialogflow.v2beta1.ParticipantsClient.create(ParticipantsClient.java:109) com.bell.LabeltoBQ.dataflow.transforms.LabelBQParDo.startBundle(LabelBQParDo.java:68)