Use #map to build your array for you and call #uniq on it...
calls_raw.map do |call|       
        {
              :date => date,
              :time => time,
              :from => call.from,
              :duration => call.duration,
              :recording => recording,
        }
end.uniq{|call| call[:from]}
The above approach will first build an array of calls larger than it may ultimately need to be, and the final call to #uniq will make the list unique.
Or, to avoid adding all the duplicates in the array, you could build it with a Hash as such:
calls_raw.each_with_object do |call, h|       
        h[call.from] ||= {
              :date => date,
              :time => time,
              :from => call.from,
              :duration => call.duration,
              :recording => recording,
        }
end.values
The Hash approach will use the first occurrence of call.from as it is being set with ||=.  To use the last occurrence of call.from then use a straightforward assignment with =.
It's also been suggested to just use a Set instead of an Array.
To take that approach you're going to have to implement #eql? and #hash on the class we're populating the set with.
class CallRaw
  attr_accessor :from
  def initialize(from)
    self.from = from
  end
  def eql?(o)
    # Base equality on 'from'
    o.from == self.from
  end
  def hash 
    # Use the hash of 'from' for our hash
    self.from.hash
  end
end
require 'set'
s = Set.new
 => <Set: {}>
s << CallRaw.new("Chewbaca")
 => <Set: {<CallRaw:0x00000002211888 @from="Chewbaca">}> 
# We expect now, that adding another will not grow our set any larger
s << CallRaw.new("Chewbaca")
 => <Set: {<CallRaw:0x00000002211888 @from="Chewbaca">}> 
# Great, it's not getting any bigger
s << CallRaw.new("Chewbaca")
s << CallRaw.new("Chewbaca")
 => <Set: {#<CallRaw:0x00000002211888 @from="Chewbaca">}> 
Awesome - the Set works!!!
Now, it is interesting to note that having implemented #eql? and #hash, we can now use Array#uniq without having to pass in a block.
a = Array.new
a << CallRaw.new("Chewbaca")
 => [<CallRaw:0x000000021e2128 @from="Chewbaca">] 
a << CallRaw.new("Chewbaca")
 => [<CallRaw:0x000000021e2128 @from="Chewbaca">, <CallRaw:0x000000021c2bc0 @from="Chewbaca">]
a.uniq
 => [<CallRaw:0x000000021e2128 @from="Chewbaca">]
Now, I'm just wondering if there is a badge that StackOverflow awards for having too much coffee before setting out to answer a question?