Retrieving an Interaction response
The Medallia Experience Orchestration SDK considers Android Activities and Fragments as Interactions. When configured correctly the SDK will automatically send an Interaction request to Medallia Experience Orchestration and process the response which may contain Points (Optimizations, Capture, etc). If desired, you can be notified of these automatic Interactions to take additional action on each Interaction request, by using the automatic Interaction subscription API.
It is incumbent on you to then process the response in order for the Medallia Experience Orchestration SDK to perform automatic Capture and Optimization.
onStop
method.The response can be passed to the process
method, as shown below. By calling this method the response is returned to the SDK to process, attaching any Captures, Trackers, and/or Optimizations to the Interaction.
This functionality will not work if automatic Interaction detection is disabled. For retrieving the response in sending programmatic Interactions, see sending an Interaction request and retrieve the response.
Retrieving a response for an automatic Activity Interaction request
import com.medallia.mxo.automatic.MXOAutomaticInteractionSubscription
import com.medallia.mxo.mxoSubscribeToAutomaticInteraction
import com.medallia.mxo.process
import android.util.Log
class MainActivity : AppCompatActivity() {
private var mxoAutomaticInteractionSubscription: MXOAutomaticInteractionSubscription? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onStart() {
super.onStart()
mxoAutomaticInteractionSubscription = mxoSubscribeToAutomaticInteraction {
interaction(this@MainActivity)
onError { error ->
Log.e(TAG, "SDK Error", error)
}
onFailure { error ->
Log.e(TAG, "API Error", error)
}
onResponse { response ->
Log.d(TAG, "Success: ${response.tid}")
response.process()
}
}
}
override fun onStop() {
super.onStop()
mxoAutomaticInteractionSubscription?.unsubscribe()
}
companion object {
const val TAG = "MainActivity"
}
}
import com.medallia.mxo.MedalliaMXO;
import com.medallia.mxo.automatic.MXOAutomaticInteractionSubscriber;
import com.medallia.mxo.automatic.MXOAutomaticInteractionSubscription;
import com.medallia.mxo.interactions.MXOInteractionResponse;
import com.medallia.mxo.MXOErrorApi;
import com.medallia.mxo.MXOErrorSdk;
import org.jetbrains.annotations.Nullable;
public class MainActivity extends AppCompatActivity {
private MXOAutomaticInteractionSubscription mxoAutomaticInteractionSubscription = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onStart() {
super.onStart();
MXOAutomaticInteractionSubscriber subscriber = new MXOAutomaticInteractionSubscriber.Builder()
.interaction(this)
.onError(error -> Log.e("example", "SDK Error: " + error.getErrorMessage()))
.onFailure(error -> Log.e("example", "API Error: " + error.getErrorMessage()))
.onResponse(response -> Log.d("example", response.getTid()))
.build();
mxoAutomaticInteractionSubscription = MedalliaMXO.subscribeToAutomaticInteraction(subscriber);
}
@Override
protected void onStop() {
super.onStop();
if (mxoAutomaticInteractionSubscription != null) {
mxoAutomaticInteractionSubscription.unsubscribe();
}
}
}
Retrieving a response for an automatic Fragment Interaction request
import com.medallia.mxo.automatic.MXOAutomaticInteractionSubscription
import com.medallia.mxo.mxoSubscribeToAutomaticInteraction
import com.medallia.mxo.process
import android.util.Log
class MainActivity : FragmentActivity() {
private var mxoAutomaticInteractionSubscription: MXOAutomaticInteractionSubscription? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.add(R.id.fragment_container, TestFragment())
.setReorderingAllowed(true)
.commit()
}
}
override fun onStart() {
super.onStart()
supportFragmentManager
.findFragmentById(R.id.fragment_container)
mxoAutomaticInteractionSubscription = mxoSubscribeToAutomaticInteraction {
interaction(fragment = this@TestFragment)
onError { error ->
Log.e(TAG, "SDK Error", error)
}
onFailure { error ->
Log.e(TAG, "API Error", error)
}
onResponse { response ->
Log.d(TAG, "Success: ${response.tid}")
response.process()
}
}
}
override fun onStop() {
super.onStop()
supportFragmentManager
.findFragmentById(R.id.fragment_container)
mxoAutomaticInteractionSubscription?.unsubscribe()
}
class TestFragment : Fragment() {
override fun onCreateView (
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_test, container, false)
}
companion object {
const val TAG = "MainActivity"
}
}
import com.medallia.mobile.MedalliaMXO;
import com.medallia.mxo.automatic.MXOAutomaticInteractionSubscriber;
import com.medallia.mxo.automatic.MXOAutomaticInteractionSubscription;
import com.medallia.mxo.interactions.MXOInteractionResponse;
import com.medallia.mxo.MXOErrorApi;
import com.medallia.mxo.MXOErrorSdk;
public class FirstFragment extends Fragment {
private FragmentFirstBinding binding;
private MXOAutomaticInteractionSubscription mxoSubscription;
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState
) {
binding = FragmentFirstBinding.inflate(inflater, container, false);
return binding.getRoot();
}
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
binding.buttonFirst.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
NavHostFragment.findNavController(FirstFragment.this)
.navigate(R.id.action_FirstFragment_to_SecondFragment);
}
});
MXOAutomaticInteractionSubscriber subscriber = new MXOAutomaticInteractionSubscriber.Builder()
.interaction(this)
.onError(error -> Log.e("example", "SDK Error: " + error.getErrorMessage()))
.onFailure(error -> Log.e("example", "Api Error: " + error.getErrorMessage()))
.onResponse(response -> Log.d("example", response.getTid()))
.build();
this.mxoSubscription = MedalliaMXO.subscribeToAutomaticInteraction(subscriber);
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
if (this.mxoSubscription != null) {
mxoSubscription.unsubscribe();
mxoSubscription = null;
}
}
}
Retrieving a response for a manually assigned Interaction request
import com.medallia.mxo.interactions.MXOInteraction
import com.medallia.mxo.process
import com.medallia.mxo.automatic.mxoAutomaticInteractionSubscriber
import com.medallia.mxo.automatic.mxoAutomaticInteractionSubscribtion
import android.util.Log
override fun onStart() {
super.onStart()
mxoAutomaticInteractionSubscription = mxoSubscribeToAutomaticInteraction {
interaction(MXOInteraction(URI("/ManualInteraction")))
onError { error ->
Log.e(TAG, "SDK Error", error)
}
onFailure { error ->
Log.e(TAG, "API Error", error)
}
onResponse { response ->
Log.d(TAG, "Success: ${response.tid}")
response.process()
}
}
}
override fun onStop() {
super.onStop()
mxoAutomaticInteractionSubscription?.unsubscribe()
}
import com.medallia.mxo.MedalliaMXO;
import com.medallia.mxo.interactions.MXOInteraction;
import com.medallia.mxo.interactions.MXOInteractionResponse;
import com.medallia.mxo.automatic.MXOAutomaticInteractionSubscrber;
import com.medallia.mxo.automatic.MXOAutomaticInteractionSubscription;
import com.medallia.mxo.MXOErrorApi;
import com.medallia.mxo.MXOErrorSdk;
import java.net.URI;
@Override
protected void onStart(){
super.onStart();
MXOAutomaticInteractionSubscriber subscriber = new MXOAutomaticInteractionSubscriber.Builder()
.interaction(this)
.onError(error -> Log.e("example", "SDK Error: " + error.getErrorMessage()))
.onFailure(error -> Log.e("example", "API Error: " + error.getErrorMessage()))
.onResponse(response -> Log.d("example", response.getTid()))
.build();
mxoAutomaticInteractionSubscription = MedalliaMXO.subscribeToAutomaticInteraction(subscriber);
});
}
@Override
protected void onStop(){
super.onStop();
if (mxoAutomaticInteractionSubscription != null) {
mxoAutomaticInteractionSubscription.unsubscribe();
}
}