001package com.plivo.api.models.node; 002 003import com.fasterxml.jackson.annotation.JsonIgnore; 004import com.plivo.api.Plivo; 005import com.plivo.api.PlivoClient; 006import com.plivo.api.models.base.Updater; 007import retrofit2.Call; 008 009public class MultiPartyCallUpdater extends Updater<MultiPartyCallUpdateResponse> { 010 011 private String phloId; 012 private String triggerSource; 013 private String to; 014 private String role; 015 private MultiPartyCallActionType action; 016 private NodeType nodeType; 017 private MultiPartyCallUpdatePayload multiPartyCallUpdatePayload; 018 private String member = null; 019 020 021 public MultiPartyCallUpdater(String phloId, String id) { 022 super(id); 023 this.phloId = phloId; 024 this.nodeType = NodeType.MULTI_PARTY_CALL; 025 } 026 027 @JsonIgnore 028 protected PlivoClient plivoClient = Plivo.getPhloClient(); 029 030 @Override 031 public PlivoClient client() { 032 return this.plivoClient; 033 } 034 035 public String triggerSource() { 036 return this.triggerSource; 037 } 038 039 public String to() { 040 return this.to; 041 } 042 043 public String role() { 044 return this.role; 045 } 046 047 public MultiPartyCallActionType action() { 048 return this.action; 049 } 050 051 public String member() { 052 return this.member; 053 } 054 055 public MultiPartyCallUpdater triggerSource(final String triggerSource) { 056 this.triggerSource = triggerSource; 057 return this; 058 } 059 060 public MultiPartyCallUpdater to(final String to) { 061 this.to = to; 062 return this; 063 } 064 065 public MultiPartyCallUpdater role(final String role) { 066 this.role = role; 067 return this; 068 } 069 070 public MultiPartyCallUpdater action(final MultiPartyCallActionType action) { 071 this.action = action; 072 return this; 073 } 074 075 public MultiPartyCallUpdater call() { 076 this.action = MultiPartyCallActionType.CALL; 077 return this; 078 } 079 080 public MultiPartyCallUpdater hold() { 081 this.action = MultiPartyCallActionType.HOLD; 082 return this; 083 } 084 085 public MultiPartyCallUpdater unhold() { 086 this.action = MultiPartyCallActionType.UNHOLD; 087 return this; 088 } 089 090 public MultiPartyCallUpdater cold_transfer() { 091 this.action = MultiPartyCallActionType.COLD_TRANSFER; 092 return this; 093 } 094 095 public MultiPartyCallUpdater warm_transfer() { 096 this.action = MultiPartyCallActionType.WARM_TRANSFER; 097 return this; 098 } 099 100 public MultiPartyCallUpdater hangup() { 101 this.action = MultiPartyCallActionType.HANGUP; 102 return this; 103 } 104 105 public MultiPartyCallUpdater resume_call() { 106 this.action = MultiPartyCallActionType.RESUME_CALL; 107 return this; 108 } 109 110 public MultiPartyCallUpdater abort_transfer() { 111 this.action = MultiPartyCallActionType.ABORT_TRANSFER; 112 return this; 113 } 114 115 public MultiPartyCallUpdater abort_warm_transfer() { 116 this.action = MultiPartyCallActionType.ABORT_TRANSFER; 117 return this; 118 } 119 120 public MultiPartyCallUpdater abort_cold_transfer() { 121 this.action = MultiPartyCallActionType.ABORT_TRANSFER; 122 return this; 123 } 124 125 public MultiPartyCallUpdater voicemail_drop() { 126 this.action = MultiPartyCallActionType.VOICEMAIL_DROP; 127 return this; 128 } 129 130 public MultiPartyCallUpdater member(final String member) { 131 this.member = member; 132 return this; 133 } 134 135 @Override 136 protected Call<MultiPartyCallUpdateResponse> obtainCall() { 137 this.multiPartyCallUpdatePayload = new MultiPartyCallUpdatePayload(this.triggerSource, 138 this.to, this.role, this.action); 139 if (this.member == null){ 140 return client().getApiService() 141 .nodeAction(phloId, this.nodeType, this.id, this.multiPartyCallUpdatePayload); 142 } 143 else{ 144 return client().getApiService() 145 .memberAction(phloId, this.nodeType, this.id, this.member, this.multiPartyCallUpdatePayload); 146 } 147 148 } 149}